打印
[MCU]

堆和栈

[复制链接]
257|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liliang9554|  楼主 | 2020-5-10 15:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
谁能简单比较“堆”和“栈”的区别?

使用特权

评论回复
沙发
午夜粪车| | 2020-5-10 15:55 | 只看该作者
堆是程序中动态申请内存的地方。

使用特权

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

使用特权

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

使用特权

评论回复
5
huangchui| | 2020-5-10 16:14 | 只看该作者

使用栈好处是快捷,但是自由度较小。
使用堆的好处是比较麻烦,但自由度较大。

使用特权

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

使用特权

评论回复
7
liliang9554|  楼主 | 2020-5-10 16:22 | 只看该作者
嗯,我知道啦

使用特权

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

本版积分规则

950

主题

11568

帖子

6

粉丝