为什么在c风格的语言中运行时堆被用于动态内存分配,而数据结构都被称为“堆”?有什么关系吗?
当前回答
Donald Knuth说(《计算机编程艺术》,第三版,第1卷,第435页):
1975年左右,一些作者开始将可用内存池称为“堆”。
他没有说哪些作者,也没有给出任何特定论文的参考文献,但他确实说了,与优先级队列相关的术语“堆”的使用是这个词的传统意义。
其他回答
实际上,读到内存分配的方式(参见Buddy Blocks)让我想起了数据结构中的堆。
也许第一个实现的内存堆是由堆结构管理的?
在我看来,这两个完全不相关的东西有相同的名字只是一个意外/巧合。就像图和图。
问:堆是什么? A.堆是放在彼此上面的对象的集合。
回答你的问题: 内存堆和二进制堆都使用相同的概念。 数据以堆的形式存储在内存中,顺序与程序中写入的顺序相同,而二进制堆是一种数据结构,它遵循以堆的形式有序存储数据的相同概念(数据在其他数据之上)。 请在评论区告诉我你的想法。
Donald Knuth说(《计算机编程艺术》,第三版,第1卷,第435页):
1975年左右,一些作者开始将可用内存池称为“堆”。
他没有说哪些作者,也没有给出任何特定论文的参考文献,但他确实说了,与优先级队列相关的术语“堆”的使用是这个词的传统意义。