【问题标题】:Array of ValueType in C# goes to Heap or Stack? [duplicate]C#中的ValueType数组去堆还是栈? [复制]
【发布时间】:2011-10-11 06:48:20
【问题描述】:

可能重复:
(C#) Arrays, heap and stack and value types

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

假设我有这个指令:

int[] array = new int[512];

“数组”是否进入堆?还是在 Stack 上保留 512 个整数?

【问题讨论】:

标签: c# heap-memory stack-memory


【解决方案1】:

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

例如在这个类中:

public class X
{
    public int Y;
}

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 2021-06-19
    • 2012-11-18
    相关资源
    最近更新 更多