gpt4 book ai didi

winapi - 私有(private)堆或自行管理内存

转载 作者:行者123 更新时间:2023-12-01 11:59:52 26 4
gpt4 key购买 nike

我知道我们可以利用创建 Windows 私有(private)堆的一些优势,尤其是对于频繁分配和取消分配的小块。但我认为正常的方法是从默认堆中分配大内存并自行管理分配和取消分配。我的问题是这两种方式的优缺点是什么?

谢谢,最大

最佳答案

管理自己的堆的一些优点:

  • 您或许可以针对自己的分配需求进行非常具体的优化并提高性能。
  • 如果您了解并发规则,您或许可以避免使用同步对象。
  • 单个释放可以释放一整套分配。例如,一个短暂的进程需要一次性释放大量小分配,可以将它们从一个更大的 block 中分离出来,稍后可以通过一次调用将其释放。

不过,缺点也很大。增加的复杂性会产生更多的错误,更难维护,最终很可能会导致性能下降。我绝对没有数据支持这一点,但我怀疑更多的本土堆管理系统会导致更糟糕的性能而不是帮助它。

使用系统分配(例如 HeapAlloc)的一些优点:

  • 降低复杂性。
  • 降低了分配/释放过程中出现并发问题的风险。
  • 利用 Low-Fragmentation Heap 的能力.在大多数非常有效地处理小分配的情况下,这已经做得很好。

关于winapi - 私有(private)堆或自行管理内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2776277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com