2011-01-02 7 views
1

Я создаю временный стек объектов - в основном для использования структур STL на основе кучи, которые на самом деле имеют временное время жизни, но любое другое временное распределение с динамическим размером. Один стек выполняет все типы - хранение в развернутом связанном списке.Распределение памяти распределителя памяти

Я пришел с обрезкой с выравниванием. Я могу получить выравнивание с std::alignment_of<T>, но это не очень здорово, потому что мне нужно выравнивание следующего типа, который я хочу выделить. Прямо сейчас, я просто произвольно сортировал каждый объект с кратным 16, что, насколько мне известно, является максимальным выравниванием для любого типа x86 или x64. Но теперь у меня есть два указателя накладных расходов на каждый объект, а также стоимость их размещения в моем векторе плюс стоимость того, чтобы каждый размер округлился до кратного 16.

На стороне плюса , строительство и разрушение являются быстрыми и надежными.

Как это сравнить с обычным оператором new/delete? И какие типы тестов я могу запустить? Я очень доволен своим текущим прогрессом и не хочу позже узнавать, что он прослушивается каким-то неприятным тонким способом, поэтому любые советы по тестированию операций были бы хороши.

ответ

0

Это не отвечает на ваш вопрос, но Boost недавно добавила библиотеку memory pool в последней версии.

Возможно, это не совсем то, что вы хотите, но есть основательная treatment of alignment, которая может спровоцировать идею? Если документов недостаточно, всегда есть исходный код.

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