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

问题描述 投票:0回答:1

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

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

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

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

思考?

c algorithm memory-management data-structures game-engine
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.