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