【发布时间】:2010-10-19 21:39:59
【问题描述】:
堆是一种树数据结构,其中较高级别的树总是包含比较低级别更大(或更小,如果以这种方式设置)的值。 “该”堆是程序可用于动态分配的一堆空闲 RAM。它们都被称为“堆”,但一个与另一个有什么关系?
【问题讨论】:
标签: memory heap heap-memory definition
堆是一种树数据结构,其中较高级别的树总是包含比较低级别更大(或更小,如果以这种方式设置)的值。 “该”堆是程序可用于动态分配的一堆空闲 RAM。它们都被称为“堆”,但一个与另一个有什么关系?
【问题讨论】:
标签: memory heap heap-memory definition
说实话,没什么。我想 heap 这个词只是简单地使用它的日常(非技术)用法,并作为相当好的类比分别应用于这两个概念。
在第一种情况下(树数据结构的含义),描述 heap 是最合适的,因为“更大”的对象被放置在树中更高的位置(其中“更大”由任意键确定功能) - 即在较大的物体之上有一种较小的物体堆积(或顶部较大,取决于您的想法)。这就是我的解释;最先将 heap 这个名字应用到这个数据结构上的人认为这是一个合适的名字,但它只是卡住了。
在第二种情况下(RAM 块),堆的名称可能更明显一些。 “堆”在这里只是“以高度任意顺序排列的大量事物的集合”,这似乎与动态分配的内存块一样适用于常见用法。
无论如何,我不会担心您可以在这两个想法之间得出抽象的隐喻相似性。完全分开对待,在任何情况下都不会出错。
编辑:似乎基于树的数据结构可能取自抽象代数的heap,这在计算机科学中相当普遍。但是,我不想确认或否认这一点......
【讨论】:
请访问此站点以获取exploration of the origin of the name "heap" 以免费存储内存。
【讨论】:
他们都有相同的名字,就是这样。
那里的“堆”从未被安排为实际的堆数据结构。
【讨论】:
堆(数据结构)是这样调用的,因为如果你绘制它,它看起来就像一个堆。堆(内存)被称为堆,因为它以某种方式组织但不完全。您在堆上积累数据,但其中可能存在漏洞和违规行为。就好像你把文件放在一堆一样。有时你会从底部移除一个。这有一种堆的形式,即以某种方式组织但不完全。
【讨论】:
两者之间唯一的关系就是“堆”这个名字。
【讨论】:
他们……同名!就是这样。
【讨论】:
什么都没有。没有关系。
【讨论】:
使问题进一步复杂化:在某些系统(例如 Microsoft Windows)上,在内存分配意义上存在多个“堆”。 “该”堆只是the default heap。但是如果你调用HeapAlloc(),你可以选择从哪个内存分配中进行子分配。
【讨论】:
来自 answers.com 的定义
堆:一组放置或抛出的东西,一个在另一个之上:一堆放在角落里的脏破布。
这只是基本的命名,因为以无序方式扔东西的概念形象。正如其他海报所指出的,堆不是作为堆数据结构组织的。这取决于系统库中的内存分配例程(例如,检查 malloc 的工作原理)
【讨论】: