【问题标题】:What's the relationship between "a" heap and "the" heap?“a”堆和“the”堆之间有什么关系?
【发布时间】:2010-10-19 21:39:59
【问题描述】:

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

【问题讨论】:

标签: memory heap heap-memory definition


【解决方案1】:

说实话,没什么。我想 heap 这个词只是简单地使用它的日常(非技术)用法,并作为相当好的类比分别应用于这两个概念。

在第一种情况下(树数据结构的含义),描述 heap 是最合适的,因为“更大”的对象被放置在树中更高的位置(其中“更大”由任意键确定功能) - 即在较大的物体之上有一种较小的物体堆积(或顶部较大,取决于您的想法)。这就是我的解释;最先将 heap 这个名字应用到这个数据结构上的人认为这是一个合适的名字,但它只是卡住了。

在第二种情况下(RAM 块),堆的名称可能更明显一些。 “堆”在这里只是“以高度任意顺序排列的大量事物的集合”,这似乎与动态分配的内存块一样适用于常见用法。

无论如何,我不会担心您可以在这两个想法之间得出抽象的隐喻相似性。完全分开对待,在任何情况下都不会出错。

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

【讨论】:

    【解决方案2】:

    请访问此站点以获取exploration of the origin of the name "heap" 以免费存储内存。

    【讨论】:

      【解决方案3】:

      他们都有相同的名字,就是这样。
      那里的“堆”从未被安排为实际的堆数据结构。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • "如果你把它画出来,它看起来像一个堆" -> 谓词名词“...它看起来像一个堆”是什么意思?
        【解决方案5】:

        两者之间唯一的关系就是“堆”这个名字。

        【讨论】:

          【解决方案6】:

          他们……同名!就是这样。

          【讨论】:

            【解决方案7】:

            什么都没有。没有关系。

            【讨论】:

              【解决方案8】:

              使问题进一步复杂化:在某些系统(例如 Microsoft Windows)上,在内存分配意义上存在多个“堆”。 “该”堆只是the default heap。但是如果你调用HeapAlloc(),你可以选择从哪个内存分配中进行子分配。

              【讨论】:

                【解决方案9】:

                来自 answers.com 的定义

                堆:一组放置或抛出的东西,一个在另一个之上:一堆放在角落里的脏破布。

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

                【讨论】:

                  猜你喜欢
                  • 2013-04-09
                  • 2020-09-02
                  • 1970-01-01
                  • 2011-05-21
                  • 1970-01-01
                  • 2013-10-30
                  • 2015-01-02
                  • 2012-07-03
                  相关资源
                  最近更新 更多