Memory 堆分配内存的性能如何?

Memory 堆分配内存的性能如何?,memory,heap,Memory,Heap,动态分配的内存来自堆栈或堆。我听一些人说堆是一个链表,尽管如果是这样的话,看起来效率会非常低。例如,如果您想要分配一大块内存,那么在找到具有可用空间的内容之前,您可能必须查看列表的大部分内容。而且,随着时间的推移,具有少量可用内存的块的数量可能会越来越大。因此,某些算法声称的大O表示法运行时可能不正确,因为它们通常依赖于恒定时间分配。谁能澄清一下它们是如何实现的以及它们的效率有多高吗?堆是以不同的方式管理的。您可以在internet上找到数百种不同的malloc实现。然后,您可以选择在应用程序中

动态分配的内存来自堆栈或堆。我听一些人说堆是一个链表,尽管如果是这样的话,看起来效率会非常低。例如,如果您想要分配一大块内存,那么在找到具有可用空间的内容之前,您可能必须查看列表的大部分内容。而且,随着时间的推移,具有少量可用内存的块的数量可能会越来越大。因此,某些算法声称的大O表示法运行时可能不正确,因为它们通常依赖于恒定时间分配。谁能澄清一下它们是如何实现的以及它们的效率有多高吗?

堆是以不同的方式管理的。您可以在internet上找到数百种不同的malloc实现。然后,您可以选择在应用程序中获得最佳性能的应用程序


堆的一种方法是只分配固定大小的块。例如,您的堆管理器将维护如16、32、64等块的列表。。。。。。字节。堆管理器只是提取下一个大于请求大小的可用块。

如何处理堆取决于特定的运行时。性能不是一个系统的绝对特征,没有什么东西是普遍的快或慢。