动态内存分配中使用的堆和数据结构之间有什么联系?

发布于 2024-08-24 15:40:06 字数 376 浏览 8 评论 0原文

可能的重复:
为什么两个不同的概念都称为“堆”? < /p>

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

那么,这只是堆的重载意义吗,或者说有某种联系?

Possible Duplicate:
Why are two different concepts both called “heap”?

I've googled around, but cannot find the answer for this question; what's the connection between the heap used in dynamic memory allocation and the data structure? Is memory organized on the heap in a way which is similar the the heap data structure? If so, this seems very strange, since fetching memory should be random access AFAIK (i.e, O(1)), but finding an item from a heap is not done in constant time.

So, is this just an overloaded meaning of heap, so to speak, or is there some kind of connection?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

快乐很简单 2024-08-31 15:40:06

堆是标准中所谓的自由存储的同义词。与用于函数调用和函数本地对象存储的堆栈相比,堆在许多实现上以相反的方向(从上到下)增长(与堆栈相反 - 从下到上增长)。当然,这些都不是标准所要求的。

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

某些实现可能使用堆数据结构进行自由存储管理,该名称可能由此而来。 (请参阅好友内存分配。)

Heap is a synonym for what the standard calls the free-store. In contrast to stacks, which is used for function calls, and function-local object storage, heaps grow in the opposite direction (top to bottom) on many implementations (as opposed to stacks -- which grow from bottom to top). Of course, none of these are required by the standard.

The heap data structure, on the other hand is completely different -- it is a specialized tree structure with certain properties.

It is possible some implementations use the heap data structure for free-store management, whence the name may have been derived. (See buddy memory allocation.)

不喜欢何必死缠烂打 2024-08-31 15:40:06

不,程序堆与堆数据结构不同。换句话说,没有关系。 这个问题详细讨论了程序堆。

No, the program heap is different from the heap data structure. In other words, no relation. This question discusses the program heap in detail.

荒人说梦 2024-08-31 15:40:06

没有任何关系,但我承认这个名字可能会令人困惑。内存中的堆是操作系统分配给程序的数组。堆是由用于快速查找的程序实现的。

There is no relation, but I admit the name can be confusing. The heap in memory is an array that the OS allocates to programs. A heap is implemented by programs for fast lookup.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文