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