这两个“堆”之间的关系是什么?

时间:2013-04-17 01:11:10

标签: heap concept

计算机科学中有两个名为“堆”的概念。一个是内存管理中使用的内存池,另一个是算法。

我知道他们不同,但他们之间的关系是什么?或者他们碰巧得到了相同的名字?

1 个答案:

答案 0 :(得分:0)

据我所知,他们碰巧有相同的名字。

一个'堆'是数据结构,在其头部包含集合的最大元素。由于它的孩子必须比它小,它是一个半分类的集合。这比在某些情况下维护完全排序的列表更有效,例如当您通常只对最大元素感兴趣时。 http://en.wikipedia.org/wiki/Heap_(data_structure)

另一个'堆'是内存中的位置,除了可以存储堆栈数据。存储在堆栈中的数据的问题在于,当函数返回时,它将被释放,从而丢失,并且最重要的是堆栈在溢出之前只能保持这么多。堆的“结构”通常是一个自由数据段的链接列表 - malloc查找满足大小要求的数据段,将其标记为正在使用并返回它,而自由查找该数据段的标题。 heap,将其标记为未使用,并将其放回到可用数据段的链接列表中。 (其他优化包括为某些块大小设置专用链接列表等。)

如您所见 - 根本没有相关性!