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

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

2 голосов
/ 23 февраля 2011

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

Если у вас есть документы или ссылки на эти темы, пожалуйста, оставьте их здесь.

Спасибо, Harsha

Ответы [ 4 ]

6 голосов
/ 23 февраля 2011

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

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

2 голосов
/ 23 февраля 2011

Эта ссылка http://msdn.microsoft.com/en-us/magazine/bb985010.aspx объясняет сборку мусора и некоторое управление памятью.

1 голос
/ 23 февраля 2011

enter image description here <Ч /> Примечание: Ответ Джона Скита более правильный <Ч /> Стек память :

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

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

Куча Память

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

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

Пример: (это для C, но не C #) int x; /* static stack storage <em>/ main() { int y; /</em> dynamic stack storage <em>/ char str; /</em> dynamic stack storage <em>/ str = malloc(50); /</em> allocates 50 bytes of dynamic heap storage <em>/ size = calcSize(10); /</em> dynamic heap storage */

выше содержания взято отсюда

0 голосов
/ 23 февраля 2011

Вы можете посмотреть на эти статьи:

C # Куча (ing) против стека (ing) в .NET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...