智能指针指定Deleter

unique_ptr、shared_ptr及其数组,通过lambda实现指定Deleter

unique_ptr

1
2
3
4
5
std::unique_ptr<Test, std::function<void(Test *)>> test(new Test, [](Test* _pointer) {
//其他操作
delete _pointer;
});

数组

1
std::unique_ptr<Test, std::function<void(Test *)>>(new Test[5], std::default_delete<Test[]>());

shared_ptr

1
2
3
4
std::shared_ptr<Test> p(new Test, [](Test* _pointer) {
//其他操作
delete _pointer;
});

数组

1
std::shared_ptr<Test> p(new Test[5], std::default_delete<Test[]>());