作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
堆是一种树数据结构,其中较高级别的树总是包含比较低级别更大(或更小,如果以这种方式设置)的值。 “该”堆是程序可用于动态分配的一堆空闲 RAM。它们都被称为“堆”,但一个与另一个有什么关系?
最佳答案
说实话,没什么。我想 heap 这个词只是简单地使用它的日常(非技术)用法,并作为相当好的类比分别应用于这两个概念。
在第一种情况下(树数据结构的含义),描述 heap 是最合适的,因为“更大”的对象被放置在树中更高的位置(其中“更大”由任意键确定功能) - 即在较大的物体之上有一种较小的物体堆积(或在顶部较大,取决于您的想法)。这就是我的解释;最先将 heap 这个名字应用到这个数据结构上的人认为这是一个合适的名字,但它只是卡住了。
在第二种情况下(RAM block ),堆的名称可能更明显一些。 “堆”在这里只是“以高度任意顺序排列的大量事物的集合”,这似乎与动态分配的内存块一样适用于常见用法。
无论如何,我不会担心您可以在这两个想法之间得出抽象的隐喻相似性。完全分开对待,在任何情况下都不会出错。
编辑:似乎基于树的数据结构可能取自heap抽象代数,这在计算机科学中相当普遍。但是,我不想确认或否认这一点......
关于memory - "a"堆和 "the"堆有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/756861/
我是一名优秀的程序员,十分优秀!