C++中shared_ptr的自定义删除器的例子
时间: 2023-10-21 22:07:50 浏览: 82
shared_ptr是C++11中新增的一个智能指针,可以自动管理动态分配的内存。shared_ptr可以通过自定义删除器来实现更加灵活的内存管理。
自定义删除器是shared_ptr的一个重要特性。它可以让我们在shared_ptr释放内存时执行一些额外的操作,比如关闭文件、释放锁等。
下面是一个简单的例子,演示如何使用shared_ptr的自定义删除器:
```c++
#include <iostream>
#include <memory>
// 自定义删除器
void my_deleter(int* p) {
std::cout << "deleting " << *p << std::endl;
delete p;
}
int main() {
std::shared_ptr<int> p(new int(42), my_deleter);
return 0;
}
```
在上面的例子中,我们定义了一个自定义删除器`my_deleter`,它会在shared_ptr释放指向的内存时被调用。在`main`函数中,我们创建了一个shared_ptr,其中第二个参数是我们定义的自定义删除器。
当shared_ptr对象被销毁时,自定义删除器`my_deleter`会被自动调用,输出"deleting 42",然后释放内存。
需要注意的是,自定义删除器的类型必须与shared_ptr对象的模板参数类型的删除器类型匹配。例如,如果我们使用`std::shared_ptr<int>`,那么删除器的类型必须是`std::function<void(int*)>`或者函数指针类型`void(*)(int*)`。
阅读全文