要实现不含碎片化的STL容器的批量内存释放,可以使用以下方法:
std::vector
作为临时缓冲区,将要释放的对象指针存储在其中。std::vector
Object* obj1 = new Object();
Object* obj2 = new Object();
objectsToFree.push_back(obj1);
objectsToFree.push_back(obj2);
std::for_each
函数遍历临时缓冲区,并使用lambda表达式释放每个对象的内存。std::for_each(objectsToFree.begin(), objectsToFree.end(), [](Object* obj) {
delete obj;
});
objectsToFree.clear();
完整示例代码如下:
#include
#include
#include
class Object {
public:
Object() {
std::cout << "Object constructed" << std::endl;
}
~Object() {
std::cout << "Object destructed" << std::endl;
}
};
int main() {
std::vector
运行以上示例代码,将输出以下结果:
Object constructed
Object constructed
Object destructed
Object destructed