堆、栈、堆栈的区别?

解决方案 »

  1.   

    找本JAVA虚拟机的书看看就懂了
    栈,一般用来存放函数的进出口地址、参数、临时变量,JAVA复杂一些,还包括C栈,这是因为JAVA有些功能是用C实现的。
    堆,留着你自己去解释吧。
      

  2.   

    我是这样想的,你可以参考一下
    栈:stack(存放局部变量(即引用))
    堆:heap(存放new出来的东西(对象))
    堆栈一般就可以当作内存来理解吧
      

  3.   

    其实只有两个概念:
    stack and heap
    stack:中文翻译为栈或堆栈,指的就是一种后进先出的数据结构
    heap:堆,堆是一个无序的结构,
    为什么stack有时候翻译成堆栈? 因为heap是stack的组成单元。
      

  4.   

     
    作者: 芊珑发布日期: 2006-2-10 查看数: 125 出自: http://www.cnitexam.com 
    一、预备知识—程序的内存分配 
    一个由c/C++编译的程序占用的内存分为以下几个部分 
    1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 
    2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 
    3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 
    4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放 
    5、程序代码区—存放函数体的二进制代码。