打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[C++]堆和自由存储区的区别

 

一、起源
前面([C++]全局变量和静态全局变量 )说:C++内存分成5个区,分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
但这个自由存储区这么一听还是模模糊糊的,和堆好像是一样的,还有同学说起这个问题。

二、个人理解
关于自由存储区和堆的区别,我是这样理解的
(1)字面意思是“自由存储”区,那就是可以随便 malloc它,随后我们把malloc来的内存,想怎么用就怎么用,想存啥就存啥,反正最后别忘了free了就行了。这个区我理解成自由存储区,“自由”嘛。
(2)堆区和栈区也算是它的转换过去的一部分,不过肯定不属于它,非要区分,那堆和栈可以在自由存储区上自由扩展,直到把它消耗完。
(3)就是自由存储区嘛,就是我们可以“随便用”的那块嘛,就是“不是堆但我们可以随便用”它的那块。我联想的是:我们new从堆上操作,而堆再在自由存储区上去malloc扩展自己,相当于更底层一点。如果我们非要操作这个底层,那我们自己就malloc它。
(4)我的再一个图形化的理解是:堆相当于一个内核,而自由存储区相当于一个底层的驱动。

 
(5)都是用户来申请释放,认为相同也没啥问题。这也不是C++标准的规定,只是一个理论性的字面总结而已。

大概理解就这么多,有什么错误的地方,还希望指正或对骂。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
c语言中变量(存储区 栈)和malloc(动态申请 堆)的区别
处理动态链表所需的函数
神秘!申请内存时底层发生了什么?
内存管理(整理笔记)
c中malloc realloc calloc 的区别和联系 - 胜不骄败不恼 - 51C...
C语言程序里全局变量、局部变量、堆、栈的存储区域
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服