“a”堆和“堆”之间的关系是什么?

时间:2009-04-16 16:09:43

标签: memory heap definition

堆是树数据结构,其中树的较高级别总是包含比较低级别更大(或更小,如果它设置的那样)值。 “堆”是一堆程序可用于动态分配的空闲RAM。它们都被称为“堆”,但是那个与另一个有什么关系呢?

9 个答案:

答案 0 :(得分:25)

老实说,没什么。我会想象 heap 这个词只是用它的日常(非技术)用法,并且单独应用于这两个概念作为相当不错的类比。

在第一种情况下(树数据结构意义),描述 heap 是最合适的,因为“更大”的对象放在树中更高的位置(其中“更大”由任意键确定功能) - 即在较大的物体顶部有一种较小物体的堆积(或者在顶部较大,取决于你如何看待它)。这就是我解释它的方式;无论谁首先将名称​​ heap 应用于此数据结构,都认为它在他的脑海中是一个合适的名称,而且它只是卡住了。

在第二种情况下(RAM的块),堆的名称可能更明显一些。 “堆”在这里只是“一个高度随意的顺序的大量集合”,这似乎适用于普通用法,就像动态分配内存块一样。

无论如何,我不会担心你可以在这两个想法之间画出抽象的隐喻相似之处。完全单独对待它们,在任何情况下都不会出错。

编辑:基于树的数据结构可能的名称取自抽象代数的heap,这在计算机科学中是相当普遍的。但是,我不想确认或否认这一点......

答案 1 :(得分:8)

在这个网站上查看免费的内存存储exploration of the origin of the name "heap"

答案 2 :(得分:5)

它们都有相同的名称,就是它 “堆”永远不会被安排为实际的堆数据结构。

答案 3 :(得分:3)

堆(datastructure)被调用,因为如果你绘制它,它看起来像一个堆。堆(内存)被称为堆,因为它以某种方式组织但不完全。您在堆上累积数据,但可能有漏洞和不规则。就好像你把文件放在堆里一样。有时您从底部删除一个。这有一种形式的堆,即以某种方式组织但不完全。

答案 4 :(得分:2)

他们......有同样的名字!就是这样。

答案 5 :(得分:2)

两者之间唯一的关系是名称“堆”。

答案 6 :(得分:1)

无。没关系。

答案 7 :(得分:1)

进一步使问题复杂化:在某些系统(例如Microsoft Windows)上,内存分配意义上存在多个“堆”。 “堆”只是the default heap。但是,如果您拨打HeapAlloc(),则可以选择要进行子分配的内存分配。

答案 8 :(得分:0)

来自answers.com的定义

堆:放置或抛出的一组东西,一个放在另一个上面:一堆脏衣服放在角落里。

这只是基本的命名,因为以无序的方式扔东西的概念图像。正如其他海报所指出的那样,堆不是作为堆数据结构组织的。这取决于系统库中的内存分配例程(例如,检查malloc的工作原理)