C++ 对象池-以后创建对象不起作用

C++ 对象池-以后创建对象不起作用,c++,performance,memory-management,vector,object-pooling,C++,Performance,Memory Management,Vector,Object Pooling,我的目标是在连续内存中创建一个包含许多预先准备好的对象实例的向量(我以后才有这两个数据成员,但我想在连续内存中分配尽可能多的数据),然后在我的程序中,我可以快速使用其中一个准备好的“shell”来更快地实例化我的对象。最重要的是,所有这些对象都将位于相同的连续内存地址中 为了实现上述目标,我做了以下工作: vector<MyClass*>* v = new vector<MyClass>(); v.reserve(10000); //Later on.... // I

我的目标是在连续内存中创建一个包含许多预先准备好的对象实例的向量(我以后才有这两个数据成员,但我想在连续内存中分配尽可能多的数据),然后在我的程序中,我可以快速使用其中一个准备好的“shell”来更快地实例化我的对象。最重要的是,所有这些对象都将位于相同的连续内存地址中

为了实现上述目标,我做了以下工作:

vector<MyClass*>* v = new vector<MyClass>();
v.reserve(10000);

//Later on....

// I want to create my object in the continuous memory I "reserved" 
// and have a variable name to it:

v->push_back(MyClass m(10,20));
process(m);

我做对象池,但我不尝试在连续内存中分配它们,因为这不是内存缓存,而是最小化对
new
delete
的调用

我将使用过的对象保存在一个自由列表中。 当我不再需要它时,我会把它推到免费列表中。 然后,当我需要一个时,我就从免费列表中弹出一个。
如果空闲列表是空的,那就是当我创建一个新的时。

vector v=new vector
这就是Java。另请注意,在第二行中,您使用的是点(
),而不是
->
class MyClass{
    public:
        MyClass();
        MyClass(int a, int b);
        MyClass(const MyClass& m);
        int a;
        int b;
    private:
    //Made above example simpler by putting everything public
}