为什么在c风格的语言中运行时堆被用于动态内存分配,而数据结构都被称为“堆”?有什么关系吗?


当前回答

实际上,读到内存分配的方式(参见Buddy Blocks)让我想起了数据结构中的堆。

其他回答

在c++标准中并没有使用通俗的术语堆栈内存和堆内存。该标准使用静态存储、线程存储、自动存储和动态存储。

更多信息可以在标准的存储时间部分找到。

因此,从语言和标准库的角度来看,不存在混淆。

Donald Knuth说(《计算机编程艺术》,第三版,第1卷,第435页):

1975年左右,一些作者开始将可用内存池称为“堆”。

他没有说哪些作者,也没有给出任何特定论文的参考文献,但他确实说了,与优先级队列相关的术语“堆”的使用是这个词的传统意义。

也许第一个实现的内存堆是由堆结构管理的?

问:堆是什么? A.堆是放在彼此上面的对象的集合。

回答你的问题: 内存堆和二进制堆都使用相同的概念。 数据以堆的形式存储在内存中,顺序与程序中写入的顺序相同,而二进制堆是一种数据结构,它遵循以堆的形式有序存储数据的相同概念(数据在其他数据之上)。 请在评论区告诉我你的想法。

在我看来,这两个完全不相关的东西有相同的名字只是一个意外/巧合。就像图和图。