您的位置:首页 > 其它

Stack与Heap的区别

2016-04-05 17:13 197 查看
  申明:这里所说的栈和堆是程序内存管理中的栈和堆,而不是数据结构里的栈和堆。

  (1)保存的内容不同:栈里保存的是局部变量,而堆里保存的是动态申请的变量。

  (2)栈里的内存系统自动申请和释放,程序执行出申请的区域,内存就会自动释放,而栈里的内存需要手动地申请和释放(malloc/free、new/delete)。如果不及时释放会造成内存泄漏(Memory Leak)现象的发生。

  (3)栈的可用大小由编译器确定,是一个常数,因此可能出现溢出的现象,堆的大小由系统可用虚拟内存确定,所以堆的可用内存大小更灵活。

  (4)栈的内存是连续的,堆的内存可能是不连续的。

  (5)栈向低地址生长,堆向高地址生长。

  (6)栈的存取效率比堆的存取效率高。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: