Основные отличия памяти, выделенной на стеке потока, от управляемой кучи:
- Стек — это область оперативной памяти, которая создаётся для каждого потока. 1 Размер стека — фиксированная величина, и превышение лимита выделенной на стеке памяти приведёт к переполнению стека. 1 Когда переменная пропадает из области видимости, она автоматически удаляется из стека. 1
- Куча — это хранилище памяти, расположенное в ОЗУ, которое допускает динамическое выделение памяти. 1 Размер кучи задаётся при запуске приложения, но, в отличие от стека, он ограничен лишь физически, и это позволяет создавать динамические переменные. 1 Когда в куче выделяется участок памяти для хранения переменной, к ней можно обратиться не только в потоке, но и во всём приложении. 1 По завершении приложения все выделенные участки памяти освобождаются. 1
Таким образом, стек используется для статичного выделения памяти для каждого потока, а куча — для динамического выделения памяти, общей для всех потоков приложения. 4