分享

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

 wlk8611 2012-06-14

 

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

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

[C++]堆和自由存储区的区别 - 熊哥 - 熊哥
 
(5)都是用户来申请释放,认为相同也没啥问题。这也不是C++标准的规定,只是一个理论性的字面总结而已。

大概理解就这么多,有什么错误的地方,还希望指正或对骂。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多