如何自定义std::shared_ptr的删除器

avatar
作者
猴君
阅读量:0

要自定义std::shared_ptr的删除器,需要使用std::shared_ptr的构造函数,其中可以传递一个lambda函数来定义自定义的删除器。下面是一个示例:

#include <memory> #include <iostream>  struct MyData {     int value;     MyData(int v) : value(v) {} };  int main() {     std::shared_ptr<MyData> ptr(new MyData(10), [](MyData* data) {         std::cout << "Custom deleter called for value: " << data->value << std::endl;         delete data;     });      // 使用自定义的删除器     // 输出: Custom deleter called for value: 10     return 0; } 

在上面的示例中,我们使用lambda函数作为std::shared_ptr的删除器,当ptr超出作用域时,lambda函数会被调用来释放资源。您可以根据自己的需求来定义删除器的行为。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!