【发布时间】:2013-11-24 21:33:12
【问题描述】:
使用这个例子int[] scores = new int[5];
内存位置是在声明 int[] 时还是在使用关键字 new 时预留的?
谢谢
【问题讨论】:
使用这个例子int[] scores = new int[5];
内存位置是在声明 int[] 时还是在使用关键字 new 时预留的?
谢谢
【问题讨论】:
首先,我注意到你没有说声明是局部的、类类型的字段还是结构类型的字段。假设它是本地的。
声明为变量scores分配了一个存储位置,该变量包含一个reference。这个存储位置可能是堆栈位置、堆位置或寄存器;由 C# 编译器和抖动共同决定哪个是最好的。
new[] 为数组分配内存。其结果是对数组的引用,该数组存储在与scores 关联的位置。
【讨论】:
这个答案有很多,堆栈/寄存器和 GC 堆都为此发挥作用。通过价值和参考也会产生影响,而不是全部解释,这里是一个类似问题的链接。
【讨论】: