例如A是一个类
A a=new A();
A b;
b=a;请问,给b分配空间了吗?内存中是占1个A类大小的内存,还是占2个A类大小的内存?

解决方案 »

  1.   

    我觉得应该是 先给a分配一个空间
    然后声名b
    然后  给b分配空间, 引用a
      

  2.   

    一共有三个空间,
    一个A类大小的内存空间,
    两个句柄空间a和b。a和b都是对象句柄(类似c的指针),其中保存一个地址,指向实际的对象所占内存空间的起始地址。
    b=a后,只是把两个句柄指向同一个地址而已。
      

  3.   

    A a=new A();//引用a放在栈中,new A()放在堆 中,a->new A()
    A b;//只申明了个b(放在栈中
    b=a; //b指向a所指向的内存地址  b->new A()
      

  4.   

    在堆上只分配了一个A类大小的空间,在栈里分配了a,b的变量的存储地址用的空间