“堆”和“栈”

[复制链接]
1996|6
 楼主| morrisk 发表于 2012-12-23 19:16 | 显示全部楼层 |阅读模式
谁能简单比较“堆”和“栈”的区别?
juventus9554 发表于 2012-12-23 19:16 | 显示全部楼层
堆是程序中动态申请内存的地方。
juventus9554 发表于 2012-12-23 19:17 | 显示全部楼层
栈是函数嵌套调用,中断,任务切换时保护现场时存储相关寄存器的地方。
kangzj 发表于 2012-12-23 19:18 | 显示全部楼层
真是简洁明了
urshine 发表于 2012-12-23 20:54 | 显示全部楼层
都快忘了,再来回顾一下。堆是由程序员自己分配释放的区域,如c中malloc函数。栈是编译器自动分配释放,存放函数参数,局部变量的值
拿起书本 发表于 2012-12-24 09:34 | 显示全部楼层
使用栈好处是快捷,但是自由度较小。
使用堆的好处是比较麻烦,但自由度较大。
  
ElderFox 发表于 2012-12-25 15:43 | 显示全部楼层
静态区:保存自动全局变量和static变量(包括static全局和局部变量)。静态区的内容在整个生命程序周期都存在,由编译器在编译的时候分配。
栈:保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。特点是效率高,空间大小有限。
堆:由malloc系列函数或new操作符分配的内存,其生命周期由free或delete决定。在没有释放之前一直存在,直到程序结束。特点是使用灵活,空间比较大,但容易出错。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

701

主题

6879

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部