предположим, что мне нужно часто размещать и удалять объекты в куче (произвольного размера), есть ли какое-то преимущество в производительности, если вместо удаления этих объектов я верну его обратно в некоторый "пул", чтобы использовать его позже?
даст ли это выгоду за счет уменьшения выделения / освобождения кучи? Или оно будет медленнее по сравнению с производительностью распределителя памяти, поскольку «пулу» необходимо управлять динамическим набором указателей.
мой вариант использования: предположим, что я создаю контейнер очереди на основе связанного списка, и каждый узел этого списка размещается в куче, поэтому каждый вызов push () и pop () будет выделять и освобождать этот узел:
`
template <typename T> struct QueueNode {
QueueNode<T>* next;
T object;
}
template <typename T> class Queue {
void push(T object) {
QueueNode<T>* newNode = QueueNodePool<T>::get(); //get recycled node
if(!newNode) {
newNode = new QueueNode<T>(object);
}
// push newNode routine here..
}
T pop() {
//pop routine here...
QueueNodePool<T>::store(unusedNode); //recycle node
return unusedNode->object;
}
}
`