我目前正在开发一款小游戏,我需要经常分配和删除一些类/结构。 我想知道这是一种保存删除的方法,可能将删除对象放在一个容器中,当我想分配一个类的实例时,尝试在这个容器中选择。
我想到了new和delete运算符的重载。但是我有一点问题,如果我重载删除操作符(将"删除"对象放在容器中),如何删除它?我应该通过适当的功能吗?
答案 0 :(得分:4)
你有两种方法可以使用
1)一个对象池。当您“分配”时,您从池中获取一个对象,当您取消分配时,将其返回池中。这不是那么透明,但实施并不那么难。
2)为您的类/结构创建自定义分配器。你在一个大缓冲区中预先分配内存,当你需要分配时从那里获取内存,当你需要解除分配时,你将内存返回(实际的机制取决于你)。这有点难以实现,但可以更透明。
请查看以下链接以获取相关建议
此外,当你在场的时候,亚历山大雷斯库有一本很棒的书
http://www.amazon.com/Modern-Design-Generic-Programming-Patterns/dp/0201704315
虽然有点旧,但却很特别,并且有一个内存管理/分配器部分。
答案 1 :(得分:0)
您始终可以为对象制作免费列表。然后,当您要删除对象时,请将其添加到空闲列表中。如果您知道再也不会使用该对象,请释放内存,不要将其添加到列表中。
也许如果您告诉我们更多关于分配/解除分配背后的逻辑,我们也可以帮助您找到更好的方法。就像你分配什么对象一样?仅仅使用不同的值是同样的事情吗?
答案 2 :(得分:0)
使用这个简单的界面创建一个类:
class allocator
{
object* get();
void release(object*);
};
现在,当一个对象被实际销毁以及何时存储以供以后重用时,该决定是由该容器做出的。这也清楚地表明了对象的来源,即它们是由这个分配器管理的。