C#中ValueType的数组是堆还是堆栈

本文关键字:堆栈 数组 ValueType | 更新日期: 2023-09-27 18:03:17

可能重复:
(C#(数组、堆和堆栈以及值类型

我正在尝试研究c#中内存分配之间的一些差异

假设我有这样的指令:

int[] array = new int[512];

"数组"会进入堆吗?还是在Stack上保留512个整数?

C#中ValueType的数组是堆还是堆栈

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

例如,在此类中:

public class X
{
    public int Y;
}

尽管Y是一个int(值类型(,但由于它包含在一个类(引用类型(中,所以int Y将与对象本身一起存储,而对象本身很可能在堆中。

数组类似。int作为值类型包含在数组中,但数组本身在堆上,因此int也是。