我最近转换为 C++ 进行游戏编程 - 我在处理 C# 中的内存管理和垃圾收集问题方面有很多经验,但在 C++ 方面没有那么多经验。
我过去听过一些含糊的建议,以避免在游戏过程中进行分配和释放(即new
和delete
),并预先分配您可能需要的所有内容。但这比在游戏运行时根据需要分配和释放游戏对象(敌人、粒子等)要乏味且架构复杂得多。
我认为我读到的建议是指资源受限的平台——我的目标是主要为 PC 开发,我想经常变化的游戏状态数据最多只有几兆字节。其余的是我将要预加载的纹理、声音资源等。
所以我的问题是:在拥有千兆字节内存的 PC 世界中,为我的游戏状态数据设置精细的内存池、预分配等是否值得头疼?或者这只是一些毫无疑问的“最佳实践”传统,在最大限度地利用有限平台时演变而来,现在被重复为福音?
如果我的 2 MB 游戏数据碎片化并且现在分布在 4MB 上,我无法想象这对 1990 年之后制造的 PC 有丝毫影响——但我很想知道我是否遗漏了什么:)。