Стек и куча в c #

Возможный дубликат:
Что и где это стек и куча

В C # есть разница между кучей и стеком. Я только что понял, что всегда думал, что стек - это ОЗУ, а куча - это жесткий диск. Но сейчас я не уверен, что это правильно. Если нет, то какая разница, если они хранятся в одном месте?


person Sergey    schedule 30.06.2011    source источник


Ответы (1)


«Стек» (или, точнее, стек вызовов) - это автоматически управляемая память (даже в «неуправляемых языках», таких как C): локальные переменные хранятся в стеке в кадрах стека, которые также содержат аргументы процедур или функций и адрес возврата и возможно, какое-то машинно-зависимое состояние, которое необходимо восстановить по возвращении.

Память в виде кучи - это та часть ОЗУ (или, скорее, виртуальное адресное пространство), используемая для распределения динамической памяти (malloc в C).

Тем не менее, в C # использование кучи и стека является деталью реализации. Однако на практике объекты ссылочного типа размещаются в куче; данные типа значения могут храниться как в стеке, так и в куче, в зависимости от контекста (например, если они являются частью объекта ссылочного типа).

person Frank    schedule 30.06.2011