这与实际的堆数据结构完全不同,后者使用“堆”一词来指代所谓的堆属性(来自维基百科):
如果B是A的子节点,则key(A) ≥ key(B)。
所以它们实际上是没有关联的。一个只是一个描述性的术语,而另一个则有一个更加正式的定义。
我不确定我的答案是否正确,但据我所知,在像C#或Java这样的语言中,由垃圾回收器管理内存区域并非是线性的。GC会释放可以释放的内存,并在内存不足时压缩内存进行某种碎片整理。它移动程序使用的内存块以在“末尾”腾出一些空间。
你为什么需要这个答案?你想进行一些低级内存管理吗?