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