Память стека и кучи
Мой вопрос здесь
Что такое стек и куча памяти
Почему нам нужны обе эти воспоминания
каковы плюсы и минусы каждого
В двух словах:
The stack
- память, которую программа использует для фактического запуска программы. Это содержит локальные переменные, данные обратного вызова (например, когда вы вызываете функцию, стек хранит состояние и помещает вас в код до того, как вы ввели новую функцию) и некоторые другие мелочи такого характера. Обычно вы не управляете стеком напрямую, переменные и данные уничтожаются, создаются при перемещении и выводе функций.
The heap
- "Динамическая" память программы. Каждый раз, когда вы создаете новый объект или переменную динамически, он сохраняется в куче. Эта память управляется непосредственно программистом, вы должны заботиться о создании и удалении объектов там.
Отметьте эту короткую статью о JVM, которая объясняет стек Java и кучу.
В C/С++ языковая память, выделенная в стек, автоматически освобождается при завершении области выделения, память в куче должна быть бесплатной с некоторой политикой (free(), delete... или некоторым сборщиком мусора). Память, выделенная в куче, видна среди разных областей функций. В стеке мы не можем выделить большой кусок памяти, поэтому куча также полезна, когда tou необходимо выделить большое пространство для данных.
Я не уверен, в каком контексте вы спрашиваете, но я могу ответить от их использования в распределении памяти. Обе эти структуры данных необходимы для моих платформ, например .NET для сбора мусора. Помните, что все типы значений хранятся в стеке и все ссылочные типы в куче. Эта среда справки справки создает граф объектов и отслеживает, что все объекты не используются и могут быть рассмотрены для сбора мусора.