Где они хранятся?

Я изучаю GC на .net. Я хотел бы знать, где хранятся мои целые числа, float или типы значений, хранится статическая переменная, член функций, типы значений в функции.

Любые документы или любой веб-сайт, который вы имеете по этим темам, размещайте здесь.

Спасибо, Harsha

Ответ 1

У меня есть статья, в которой говорится об этом немного, но вы действительно должны прочитать различные сообщения в блоге Эрика Липперта. "Истина о типах значений" , вероятно, самая важная, а также "Стек - это деталь реализации" (часть первая; часть вторая).

В сущности, более важно понимать сбор мусора с точки зрения достижимости и т.д., а не детали реализации того, что происходит в памяти. Это может быть полезно с точки зрения производительности, но вам нужно постоянно напоминать себе, что это деталь реализации.

Ответ 3

enter image description here


Примечание: Jon Skeet Отвечать более корректно
Стек:

Стек - это раздел памяти, который выделяется для автоматических переменных внутри функций.

Данные хранятся в стеке с использованием метода Last In First Out (LIFO). Это означает, что память в памяти распределяется и освобождается только на одном конце памяти, называемой верхней частью стека. Stack - это раздел памяти и связанные с ней регистры, которые используются для временного хранения информации, в которой первый сохраненный элемент является первым, который будет извлечен.

Память кучи

С другой стороны, куча - это область памяти, используемая для распределения динамической памяти. Блоки памяти выделяются и освобождаются в этом случае в произвольном порядке. Структура распределения и размер блоков неизвестна до времени выполнения. Куча обычно используется программой для разных целей.

Стек намного быстрее, чем куча, но также меньше и дороже.

Пример: (для C, но не С#)


    int x;                        /* static stack storage /
    main() {
       int y;                     / dynamic stack storage /
       char str;                  / dynamic stack storage /
       str = malloc(50);          / allocates 50 bytes of dynamic heap storage /
       size = calcSize(10);       / dynamic heap storage */

Над контентом Взято отсюда