堆与栈的区别
原文http://wenku.baidu.com/view/a0f0ecbaf121dd36a32d82dc.html###
总结:
1、在c++中内存分5个区 , 堆、栈、自由存储、全局/静态、常量
栈:由编译器分配,存局部变量或函数参数的
堆:由new分配的内存块
自由存储:malloc分配,free结束的内存块
全局/静态:存全局静态变量
常量:由const声明的常量
堆与栈的区别:
- 管理方式:堆由程序员管理,栈由编译器管理
- 空间大小不同
- 栈不产生碎片
- 栈是向下生长的,向着内存地址减小的方向生长的,则相反
- 堆是动态分配的,栈有动态与静态俩种
- 栈的分配效率高
注 通常所说的堆栈是指 :栈
2、在java中分为: 堆 和 栈
堆:存放由new创建的对象和数组,动态分配内存的大小,速度比栈慢点儿
栈:存放函数中定义的局部数据类型变量及对象引用变量,速度快,数据可共享,缺乏灵活性