.NET中集合的内存分配

时间:2010-06-10 20:06:31

标签: c# .net collections memory-management

这可能是一个骗局。我没有找到足够的信息。

我正在讨论.Net中的集合的内存分配。 集合中分配的元素的内存在哪里?

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

变量myList在堆栈上分配,它引用在堆上创建的List对象。

问题是当int元素添加到myList时,它们会在哪里创建?

有人指出正确的方向吗?

2 个答案:

答案 0 :(得分:8)

将在堆上创建元素。堆栈上唯一的东西是列表的指针(引用)(List<>是引用类型)

答案 1 :(得分:3)

元素也将驻留在堆中(在数组中,这就是List在内部的工作方式)。

原则上,只有局部变量和参数在堆栈上分配,其他所有内容都在堆上(除非你使用诸如stackalloc之类的稀有东西,但你不必担心这一点)< / p>