现在,我正在选择以下两种方案之一:
1. 为每种类型设置一个内存池:这将允许非常快速的分配/释放和最小的碎片化,因为对象池已经知道所分配对象的大小。但是,让我困扰的是要有几个这样的池是分开的,可能会使另一种解决方案更有效...
2. 由一个游戏表现形式的所有工厂共享一个大的内存池(使用类似boost::pool的适配器函数):这样,我就可以将所有游戏对象的内存分配在一起,并且可以为我已经知道总大小的游戏进行一次大的分配(并不总是这种情况)。我不确定它是否比A更好,因为池内可能存在碎片化,因为池中会有不同大小的对象,但这看起来更容易进行内存分析和其他问题的修复。
现在,我已经对A有了一些实际经验,但对B并不熟悉,并希望获得关于这些解决方案的建议,以便长期项目。哪种方案对于长期项目更好,为什么?(注意:在这种情况下,池确实是必要的,因为游戏模型也用于游戏编辑,因此会有许多小对象的分配/释放)。
编辑以澄清:如果还不清楚,我正在使用C++。