第一个问题:int [] test = new test[100];我知道在堆中分配了100个单元的内存空间,但是在栈中存储的是堆中的地址,问栈中分配了几个单元的内存空间来存地址呢?
我自己查了下栈中好像是只保存了堆中100个单元的首地址,不大确定,求解?还有就是如果栈中只分配了一个单元存储堆中首地址的话,那我们test[10]这样查数组中的某个元素怎么定位的,是到堆中遍历数组吗?第二个问题:A [] test = new A[100];A是一个类,网上是这么说的:会先在托管堆为test分配一次空间,并且这时不会自动初始化任何元素(即test[i]均为null)。等到以后有代码初始化某个元素的时候(A[0]=new A();),这个引用类型元素的存储空间才会被分配在托管堆上。
我想问的是"先在托管堆为test分配一次空间",这句话是什么意思,它分配了100个单位的内存空间吗?但后面A[0] = new A();进行实例化时,它才分配了真正存储数据的单元,但开始分配的100个单元的空间有什么用呢?