c++保存对象的分配和删除

c++ saving object allocation and deletion

我目前正在开发一个小游戏,我需要一些 class/struct 经常分配和删除。 我想知道这是一种保存删除的方法,也许将删除对象放入容器中,并在我想分配 class.

的实例时尝试在该容器中获取

我在考虑 new 和 delete 运算符的重载。但是我有一个小问题,如果我重载删除运算符(将 "deleted" 对象放入容器中),如何删除它?我应该通过适当的功能来做到这一点吗?

您可以随时为您的对象创建一个免费列表。然后当你想删除一个对象时,将它添加到空闲列表中。如果您知道您永远不会再使用该对象,请释放内存并且不要将其添加到列表中。

也许如果您告诉我们更多关于 allocation/deallocation 背后的逻辑,我们也可以帮助您找到更好的方法。比如你在分配什么对象?是不是同一个东西只是值不同?

您可以通过两种方式进行处理

1) 对象池。当你 "allocate" 你从池中取出一个对象,当你解除分配时 return 它回到池中。这不是那么透明,但实施起来并不难。

2) 为您的 classes/structs 创建自定义分配器。您在一个大缓冲区中预先分配内存,当您需要分配时,您从那里获取内存,当您需要释放内存时 return 返回内存(实际机制取决于您)。这实现起来有点困难,但可以更透明。

检查以下链接以获取想法

此外,当您阅读时,还有一本 Alexandrescu 的好书

http://www.amazon.com/Modern-Design-Generic-Programming-Patterns/dp/0201704315

有点旧,但仍然很特别,并且有一个记忆部分 management/allocator。

使用这个简单的界面制作 class:

class allocator
{
    object* get();
    void release(object*);
};

现在,对象何时实际销毁以及何时存储以供日后重用的决定由该容器决定。这也清楚地表明对象来自何处,即它们由该分配器管理。