-
22-10-2019 - |
题
假设我需要经常在堆上分配和删除对象(任意大小),如果没有删除这些对象,我会将其返回到以后重复使用的“池”吗?
它会通过减少堆分配/交易来给予好处,还是与内存分配器性能相比,它会更慢,因为“池”需要管理动态的指针集。
我的用例:假设我基于链接列表创建一个队列容器,并且该列表的每个节点都在堆上分配,因此每个调用push()和pop()和pop()都会分配和dealslocate node:
`
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;
}
}
`
不隶属于 StackOverflow