堆与栈的区别

原文http://wenku.baidu.com/view/a0f0ecbaf121dd36a32d82dc.html###

总结:

1、在c++中内存分5个区 , 堆、栈、自由存储、全局/静态、常量

栈:由编译器分配,存局部变量或函数参数的

堆:由new分配的内存块

自由存储:malloc分配,free结束的内存块

全局/静态:存全局静态变量

常量:由const声明的常量

堆与栈的区别:

  • 管理方式:堆由程序员管理,栈由编译器管理
  • 空间大小不同
  • 栈不产生碎片
  • 栈是向下生长的,向着内存地址减小的方向生长的,则相反
  • 堆是动态分配的,栈有动态与静态俩种
  • 栈的分配效率高

注 通常所说的堆栈是指 :栈

2、在java中分为: 堆 和 栈

堆:存放由new创建的对象和数组,动态分配内存的大小,速度比栈慢点儿

栈:存放函数中定义的局部数据类型变量及对象引用变量,速度快,数据可共享,缺乏灵活性

原文地址:https://www.cnblogs.com/zhangxiujun/p/2630187.html