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