打印
[MCU]

堆和栈的地址空间是否一定要连续?

[复制链接]
197|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
heweibig|  楼主 | 2019-11-17 15:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
堆和栈的地址空间是否一定要连续?

使用特权

评论回复
沙发
wyjie| | 2019-11-17 15:09 | 只看该作者
堆和栈的空间是系统自动分配的,或者是默认的。一般默认是连续的。轻易不要动它。

使用特权

评论回复
板凳
jiahy| | 2019-11-17 15:13 | 只看该作者
1.栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

使用特权

评论回复
地板
jiahy| | 2019-11-17 15:23 | 只看该作者
2.堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。

使用特权

评论回复
5
zhaoxqi| | 2019-11-17 15:27 | 只看该作者
这是最常见的解释堆和栈,楼主没领会了

使用特权

评论回复
6
午夜粪车| | 2019-11-17 15:35 | 只看该作者

栈:是一块连续的内存的区域。
堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。

使用特权

评论回复
7
wuhany| | 2019-11-17 15:39 | 只看该作者
使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。

使用特权

评论回复
8
shimx| | 2019-11-17 15:42 | 只看该作者
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。

使用特权

评论回复
9
jiaxw| | 2019-11-17 15:51 | 只看该作者
还是些百度的东西吧

使用特权

评论回复
10
spark周| | 2019-11-17 15:55 | 只看该作者

malloc()申请使用堆,push使用栈

内存不用连续

使用特权

评论回复
11
liliang9554| | 2019-11-17 15:58 | 只看该作者
7楼的解释很经典

使用特权

评论回复
12
heweibig|  楼主 | 2019-11-17 16:02 | 只看该作者
哦。。。

使用特权

评论回复
13
jiajs| | 2019-11-17 16:10 | 只看该作者

栈是一块连续的内存的区域
堆是向高地址扩展的数据结构,是不连续的内存区域。

使用特权

评论回复
14
huangchui| | 2019-11-17 16:13 | 只看该作者
就是连续分配的,不要轻易去改变的

使用特权

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

本版积分规则

869

主题

13089

帖子

7

粉丝