这可能是一个骗局。我没有找到足够的信息。
我正在讨论.Net中的集合的内存分配。 集合中分配的元素的内存在哪里?
List<int> myList = new List<int>();
变量myList在堆栈上分配,它引用在堆上创建的List对象。
问题是当int元素添加到myList时,它们会在哪里创建?
有人指出正确的方向吗?
答案 0 :(得分:8)
将在堆上创建元素。堆栈上唯一的东西是列表的指针(引用)(List<>
是引用类型)
答案 1 :(得分:3)
元素也将驻留在堆中(在数组中,这就是List在内部的工作方式)。
原则上,只有局部变量和参数在堆栈上分配,其他所有内容都在堆上(除非你使用诸如stackalloc
之类的稀有东西,但你不必担心这一点)< / p>