为啥内存是以堆的形式组织的?

Posted

技术标签:

【中文标题】为啥内存是以堆的形式组织的?【英文标题】:Why is memory organized in the form of a heap?为什么内存是以堆的形式组织的? 【发布时间】:2015-05-01 16:07:07 【问题描述】:

至少有一部分内存,用于由 new/malloc 创建的东西,以 Heap 的形式组织。我理解堆是一种结构,父节点总是大于或小于其子节点。它是最大堆或最小堆。

对于内存组织,构建堆的关键值是什么?换句话说,对于什么类型的信息或值,我们遵循堆构建规则(Max/Min heap)?

最后,使用堆模型组织内存有什么好处?有好的例子或理由吗?

【问题讨论】:

这能回答你的问题吗? What's the relationship between "a" heap and "the" heap? 【参考方案1】:

堆,就内存而言,是为动态分配预留的内存。这与堆数据结构完全无关。

【讨论】:

我相信这部分内存“留作动态分配”一定是按照“堆数据结构”组织或实现的,否则我们不会称它为“堆”。【参考方案2】:

不是。

您对内存管理(与堆栈)中的heap 的概念和数据结构heap 的概念感到困惑。它们不相关。具体来说,帮助内存不是用堆数据结构实现的。

【讨论】:

谢谢。但是如果这部分内存不是用“堆数据结构”来实现的,那么遵循什么数据结构呢?如果不遵循堆数据结构,为什么叫堆?【参考方案3】:

您使用的heap 标签的描述回答了您的问题:

堆(数据结构)是按深度排序的树。堆也可以指为动态分配预留的进程内存。

【讨论】:

以上是关于为啥内存是以堆的形式组织的?的主要内容,如果未能解决你的问题,请参考以下文章

计算机内存的组织方式

汉字在计算机内存中,到底是以啥形式存在的?

字符型数据在内存中是以啥形式存放的

RK3399平台开发系列讲解(内存篇)15.17物理内存的组织形式

Qt内存回收(转载)

Qt中的内存回收机制