Распределение памяти для коллекций в .NET - PullRequest
4 голосов
/ 11 июня 2010

Это может быть обман.Я не нашел достаточно информации об этом.

Я обсуждал распределение памяти для коллекций в .Net.Где память для элементов, выделенных в коллекции?

List<int> myList = new List<int>();

Переменная myList размещена в стеке и ссылается на объект List, созданный в куче.

Вопрос в том, когда элементы int добавляются в myList, где они будут созданы?

Кто-нибудь может указать верное направление?

Ответы [ 2 ]

8 голосов
/ 11 июня 2010

Элементы будут созданы в куче. Единственное, что живет в стеке - это указатель (ссылка) на список (List<> - это ссылочный тип)

3 голосов
/ 11 июня 2010

Элементы также будут находиться в куче (в массиве, так внутренне работает List).

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

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