<强>可能重复:结果   为什么是两个不同的概念都被称为“堆”?

我GOOGLE了四周,却找不到这个问题的答案;什么是动态内存分配使用堆和数据结构之间的联系?是内存的方式堆这是类似的堆数据结构组织的?如果是这样,这似乎很奇怪,因为取存储器应该是随机存取AFAIK(即,O(1)),但由一个堆找到一个项目没有在恒定的时间内完成。

所以,这只是堆的重载的意义,可以这么说,还是有某种联系?

有帮助吗?

解决方案

堆是什么的标准调用空闲存储的同义词。相反堆叠,其用于函数调用和函数本地对象存储,堆生长在上许多实现方式中相反的方向(从上到下)(相对于叠层 - 其从底部生长到顶部)。当然,由标准所要求没有这些。

堆的数据结构,在另一方面是完全不同的 - 它是一个专门的树结构具有特定属性。

有可能的一些实施方式中使用堆的数据结构为空闲存储管理,何时名称可能已经被衍生。 (请参见伙伴存储器分配。)

其他提示

没有,程序堆是从堆的数据结构不同。换句话说,没有关系。 这个问题详细讨论程序堆

没有关系,但我承认的名称可以是混乱。在存储器堆中的是,OS分配给节目的阵列。堆通过快速查找程序来实现。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top