2013-10-05 4 views
0

Моя цель - создать вектор, содержащий много заранее подготовленных (у меня нет двух элементов данных до тех пор, пока я не буду, но я хочу выделить столько, сколько я могу в непрерывной памяти) экземпляры моего объекта в непрерывной памяти, а затем в моей программе я могу быстро использовать одну из этих подготовленных «оболочек», чтобы быстрее создать экземпляр объекта. Самое главное, что все эти объекты будут расположены в одинаковых адресах постоянной памяти.Пул объектов - создание объектов позже не работает

Для достижения выше, я сделал это:

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); 

Но я не могу его собрать, пока еще есть имя переменной на объекте .... вот MyClass:

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 
} 
+0

'вектор v = новый вектор' thats Java. Также обратите внимание, что во второй строке вы используете точку ('.') вместо' -> ' – Manu343726

ответ

0

Я делаю объект пула, но я не пытаюсь выделить их в непрерывной памяти, потому что это не касается кэширования памяти, а о минимизации вызовов до new и delete.

Я продолжаю использовать объекты в свободном списке. Когда я больше не нуждаюсь в нем, я нажимаю его в свободном списке. Тогда, когда мне это нужно, я просто выхожу из списка. Если бесплатный список пуст, то это когда я new новый.

Смежные вопросы