【发布时间】:2011-01-16 04:20:31
【问题描述】:
我读到有些游戏会重写自己的 malloc 以提高效率。我不明白这在虚拟内存世界中是如何实现的。如果我没记错的话,malloc 实际上调用了一个特定于操作系统的函数,它使用 MMU 将虚拟地址映射到真实地址。那么,如何在不调用实际运行时的 malloc 的情况下制作自己的内存分配器并分配实际内存呢?
谢谢
【问题讨论】:
-
很可能他们正在预分配一大块内存(“内存竞技场”),这样可以避免碎片并提高分配性能
-
是的,您可以向操作系统请求一大块连续内存 Milo。这在系统世界中很常见。
-
是的,他们最有可能做的是在他们使用的 malloc 周围编写一个包装器,而不是直接调用 malloc,这在某些情况下确实会提高速度,但不会取代操作系统级别的东西
-
如果他们真的在重写
malloc而不仅仅是在malloc之上使用专用池,我认为这只是他们愚蠢的问题。 -
@R..:当前一代的游戏机可能更好,因为游戏在操作系统下运行而不是替换它。