什么是分配子系统的高效堆实现?

时间:2013-12-18 17:49:32

标签: c algorithm memory-management data-structures game-engine

假设我想写一个3D游戏引擎 - 在DOOM和Quake的某个地方。我想用纯C做(不确定这是否相关,但以防万一......)。

我认为值得解决的第一件事就是引擎内存分配。我已经查看了一些源代码(Quake 3,DOOM 3),在分配管理方面,我发现B树似乎是一个很好的方法,但我不确定是否将

二进制堆会更简单,但从我读过的内容来看,我不确定它是否可以很好地扩展。也许我错了?

理想情况下,我正在寻找O(1)和O(n log n)运行时效率之间的东西。我不确定这是否真实 不过:)

思想?

1 个答案:

答案 0 :(得分:0)

基本上,开始时,您可以简单地使用编译器/构建环境提供的常规malloc。然后,一旦引擎看起来不错,就可以尝试编写自己的内存分配器。

Doom 3提供了两个选项(在编译时启用):它使用内部内存分配器(这是默认设置),或者可以使用常规的malloc。

您可以查看Doom 3源代码中的Heap.cpp。它基于BTrees。但老实说,您可能会发现这很难理解!