请教:关于栈与堆的主要区别是什么?我理解的是在编译时就在stack中给基本类型变量分配内存。
而在程序运行时在heap中给对象分配内存。上述理解对否?

解决方案 »

  1.   

    stack中给基本类型变量和对象引用类型分配内存。
    heap中给对象分配内存。
      

  2.   

    栈快,堆慢
    基本类型变量和对象reference、数组存在栈里
    其它对象基本上都在堆里
      

  3.   

    栈: 
       在栈里面存放的数据必须预先知道它的大小和作用范围,编译器生成相应的代码,以便向上和向下移动指针 (创建活释放)   
       速度快,而且它里面的数据可以共享。
       存放对象的引用和基本数据类型的数据
    堆:
      程序运行动态分配,需要程序员去释放它(在JAVA中由garbage collections负责释放),速度慢,但大小和存在时间不受限制。
      用new 生成的JAVA对象就在堆里