C#中的ValueType数组去堆还是栈? [复制]
Posted
技术标签:
【中文标题】C#中的ValueType数组去堆还是栈? [复制]【英文标题】:Array of ValueType in C# goes to Heap or Stack? [duplicate] 【发布时间】:2011-10-11 06:48:20 【问题描述】:可能重复:(C#) Arrays, heap and stack and value types
我正在尝试研究 c# 中内存分配之间的一些差异
假设我有这个指令:
int[] array = new int[512];
“数组”是否进入堆?还是在 Stack 上保留 512 个整数?
【问题讨论】:
另外,blogs.msdn.com/b/ericlippert/archive/2009/05/04/… 应该是每个在内存管理语言中思考堆/堆栈的人的必修课。 docs.microsoft.com/en-us/archive/blogs/ericlippert/… Eric 博客文章的存档副本 【参考方案1】:数组本身是在堆上分配的内存。人们会感到困惑,并认为值类型总是在堆栈中,这并不总是正确的。
例如在这个类中:
public class X
public int Y;
虽然 Y 是一个 int(值类型),但由于它包含在一个类(引用类型)中,所以 int Y 将与对象本身一起存储,这很可能在堆上。
数组类似。 int 作为值类型包含在数组中,但数组本身在堆上,因此 int 也是。
【讨论】:
以上是关于C#中的ValueType数组去堆还是栈? [复制]的主要内容,如果未能解决你的问题,请参考以下文章