打印

谁能简单比较“堆”和“栈”的区别?

[复制链接]
427|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liliang9554|  楼主 | 2015-6-1 21:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
午夜粪车| | 2015-6-1 21:33 | 只看该作者

堆是程序中动态申请内存的地方。

使用特权

评论回复
板凳
午夜粪车| | 2015-6-1 21:33 | 只看该作者
栈是函数嵌套调用,中断,任务切换时保护现场时存储相关寄存器的地方。

使用特权

评论回复
地板
zhaoxqi| | 2015-6-1 21:34 | 只看该作者
都快忘了,再来回顾一下。堆是由程序员自己分配释放的区域,如c中malloc函数。栈是编译器自动分配释放,存放函数参数,局部变量的值

使用特权

评论回复
5
huangchui| | 2015-6-1 21:34 | 只看该作者
使用栈好处是快捷,但是自由度较小。
使用堆的好处是比较麻烦,但自由度较大。

使用特权

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

使用特权

评论回复
7
liliang9554|  楼主 | 2015-6-1 21:34 | 只看该作者
嗯,我知道啦

使用特权

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

本版积分规则

950

主题

11568

帖子

6

粉丝