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

这个问题在这里已经有了答案:

  • 为什么两个不同的概念都被称为“堆”? 8个答案

  • 据我所知,他们恰好有相同的名字。

    一个'堆'就是数据结构,它包含了一个集合中最重要的元素。 由于它的孩子只能比它小,所以它是一个半排序的集合。 这比在某些情况下维护完全排序的列表更有效,比如当你只对最大的元素感兴趣时。 http://en.wikipedia.org/wiki/Heap_(data_structure)

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

    正如你所看到的 - 完全没有关系!

    链接地址: http://www.djcxy.com/p/82831.html

    上一篇: What's the relationship between those two “heaps”?

    下一篇: Why is malloc()'s pool called a "heap"?