动态内存分配中使用的堆与数据结构之间的连接是什么?

Joh*_*Doe 3 c++ heap heap-memory data-structures

可能重复:
为什么两个不同的概念都称为"堆"?

我用Google搜索过,但找不到这个问题的答案; 动态内存分配中使用的堆与数据结构之间的连接是什么?内存是否以与堆数据结构类似的方式组织在堆上?如果是这样,这看起来很奇怪,因为获取内存应该是随机访问AFAIK(即O(1)),但是从堆中查找项目不会在恒定时间内完成.

那么,这只是堆的重载意义,可以这么说,还是有某种连接?

dir*_*tly 5

堆是标准称为免费商店的同义词.与用于函数调用和函数本地对象存储的堆栈相比,堆在许多实现上以相反的方向(从上到下)增长(而不是堆栈 - 从底部到顶部增长).当然,标准中不需要这些.

另一方面,堆数据结构完全不同 - 它是具有某些属性的专用树结构.

有些实现可能会使用堆数据结构进行自由存储管理,因此可能已经派生了该名称.(参见好友内存分配.)