C#中ValueType的数组是堆还是堆栈
本文关键字:堆栈 数组 ValueType | 更新日期: 2023-09-27 18:03:17
可能重复:
(C#(数组、堆和堆栈以及值类型
我正在尝试研究c#中内存分配之间的一些差异
假设我有这样的指令:
int[] array = new int[512];
"数组"会进入堆吗?还是在Stack上保留512个整数?
数组本身是在堆上分配的内存。人们会感到困惑,认为值类型总是在堆栈中,但这并不总是正确的。
例如,在此类中:
public class X
{
public int Y;
}
尽管Y是一个int(值类型(,但由于它包含在一个类(引用类型(中,所以int Y将与对象本身一起存储,而对象本身很可能在堆中。
数组类似。int作为值类型包含在数组中,但数组本身在堆上,因此int也是。