我正在制作一个小型游戏引擎,并且需要有一个与之关联的内存池。 我的问题是,我该如何将这些内存分享给有自己班级的用户?C++ - 游戏引擎中的内存池和对象分配
例如,我有一个用户在他的游戏中获得了这个类;
class Monkey : public GameObject {
public:
Monkey();
~Monkey();
void Eat();
void Sleep();
unsigned long size();
private:
int health;
};
我得到了一个基类,它目前只是返回派生类的大小。我想这将需要知道这将占用多少空间在游泳池。
public GameObject {
public:
virtual unsigned long size()=0;
};
他想在我的内存池中分配这个类的新实例。 我不知道在编译时的类定义,所以我只是不知道实际的方法调用将如何。他不能向我传递一个从GameObject继承的对象,因为这意味着他已经分配了它,这违背了预先分配的内存池的目的。那么,如何保留内存实际上适用于任何任意类的实例呢?
很抱歉,如果有固定的大小不明确的
首先,这属于[gamedev.se](http://gamedev.stackexchange.com/)。其次,为什么你需要在内存池中分配用户派生的对象? – 2011-12-25 00:04:40
内存池分配固定大小的块,我不明白你为什么需要这个大小,因为它是不变的。 – Pubby 2011-12-25 00:06:37
虽然不一定与游戏相关,但在内存池上更一般,游戏引擎就是一个例子。像我想象的那样,在内存池中分配用户对象的原因是避免必须在堆上分配它,这需要时间来分配/释放,不是?在实时应用程序中,具有快速分配的内存池听起来不错 – KaiserJohaan 2011-12-25 00:08:38