假设我想写一个3D游戏引擎 - 在DOOM和Quake的某个地方。我想用纯C做(不确定这是否相关,但以防万一......)。
我认为值得解决的第一件事就是引擎内存分配。我已经查看了一些源代码(Quake 3,DOOM 3),在分配管理方面,我发现B树似乎是一个很好的方法,但我不确定是否将
二进制堆会更简单,但从我读过的内容来看,我不确定它是否可以很好地扩展。也许我错了?
理想情况下,我正在寻找O(1)和O(n log n)运行时效率之间的东西。我不确定这是否真实 不过:)
思想?
答案 0 :(得分:0)
基本上,开始时,您可以简单地使用编译器/构建环境提供的常规malloc。然后,一旦引擎看起来不错,就可以尝试编写自己的内存分配器。
Doom 3提供了两个选项(在编译时启用):它使用内部内存分配器(这是默认设置),或者可以使用常规的malloc。
您可以查看Doom 3源代码中的Heap.cpp。它基于BTrees。但老实说,您可能会发现这很难理解!