C#中的ValueType数组转到堆或堆栈?

可能重复:
(C#)数组,堆和堆栈和值类型

我试图研究一些在C#中的内存分配之间的差异

假设我有这样的说明:

int[] array = new int[512];

“阵列”是否会进入堆? 或者它保留堆栈上的512个整数?


数组本身是分配在堆上的内存。 人们会感到困惑,认为价值类型总是在堆栈中,这并不总是正确的。

例如,在这个类中:

public class X
{
    public int Y;
}

即使Y是一个int(值类型),因为它包含在一个类(引用类型)中,所以int Y将与对象本身一起存储,这很可能在堆中存储。

该阵列是相似的。 整数作为值类型包含在数组中,但数组本身在堆中,因此整数也是。


这并不重要,因为你不能直接访问cpu栈和cpu堆,所以你无法控制它。 如果你无法控制它,你不需要担心。

在这种情况下,如果发生StackOverflowException或MemoryAllocationError以恢复关键数据,您可以做的很少

链接地址: http://www.djcxy.com/p/78881.html

上一篇: Array of ValueType in C# goes to Heap or Stack?

下一篇: Find K nearest neighbors, starting from a distance matrix