0
假设我们有下面的代码:数组局部变量的哪部分存储在堆栈上?哪一部分在堆上?
void method() {
int[] test = new int[3];
test[0] = 0;
test[1] = 1;
test[2] = 2;
}
从我从Jon Skeet's post on SO读取时,new int[3]
部分相当于:
public class ArrayInt3 {
public readonly int length = 3;
public int value0;
public int value1;
public int value2;
}
这是否意味着test
(以ArrayInt3
参考)是堆栈?这是否意味着ArrayInt3
在堆上?我想value0
,value1
和value2
也在堆上(即在这个例子中是0,1,2)?
所以总共有4个对象在堆上,对吗?
@SomeRandomGuy这些都不是对象。首先,'ArrayInt3'是一种类型。其余的是价值观。它们是单个'int []'对象的一部分。他们不是独立的。 – 2014-09-24 15:55:07
@SomeRandomGuy如果它们被初始化,它们将是4个参考值,指向堆上的其他4个对象。 – 2014-09-24 15:55:48
@SomeRandomGuy不,堆上有一个对象,即int []对象。 – 2014-09-24 15:56:14