打印

“堆”和“栈”

[复制链接]
1149|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 | 只看该作者
真是简洁明了

使用特权

评论回复
5
urshine| | 2012-12-23 20:54 | 只看该作者
都快忘了,再来回顾一下。堆是由程序员自己分配释放的区域,如c中malloc函数。栈是编译器自动分配释放,存放函数参数,局部变量的值

使用特权

评论回复
6
拿起书本| | 2012-12-24 09:34 | 只看该作者
使用栈好处是快捷,但是自由度较小。
使用堆的好处是比较麻烦,但自由度较大。
  

使用特权

评论回复
7
ElderFox| | 2012-12-25 15:43 | 只看该作者
静态区:保存自动全局变量和static变量(包括static全局和局部变量)。静态区的内容在整个生命程序周期都存在,由编译器在编译的时候分配。
栈:保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。特点是效率高,空间大小有限。
堆:由malloc系列函数或new操作符分配的内存,其生命周期由free或delete决定。在没有释放之前一直存在,直到程序结束。特点是使用灵活,空间比较大,但容易出错。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

701

主题

6879

帖子

2

粉丝