学堂 学堂 学堂公众号手机端

unique_ptr是一个智能指针类,用于管理动态分配的对象的所有权

lewis 2年前 (2023-11-11) 阅读数 6 #技术

unique_ptr是一个智能指针类,用于管理动态分配的对象的所有权。与传统的裸指针不同,unique_ptr负责自动释放其所管理的对象,从而避免内存泄漏。

unique_ptr的用法如下:

  1. 创建unique_ptr对象:可以使用std::make_unique函数创建一个unique_ptr对象,并将其指向一个动态分配的对象。
std::unique_ptr<int>ptr=std::make_unique<int>(10);
  • 访问unique_ptr指向的对象:可以使用箭头运算符或*运算符来访问unique_ptr指向的对象。
  • std::cout<<*ptr<<std::endl;
  • 移交所有权:unique_ptr不允许拷贝或赋值操作,但可以使用std::move函数来将其所有权移交给另一个unique_ptr对象。
  • std::unique_ptr<int>ptr2=std::move(ptr);
  • 手动释放对象:unique_ptr会在其生命周期结束时自动释放所管理的对象,但也可以手动释放对象。
  • ptr2.reset();
  • 使用lambda表达式自定义删除器:可以使用lambda表达式来自定义删除器,以便在释放对象时执行一些特定的操作。
  • std::unique_ptr<int,std::function<void(int*)>>ptr3(newint(20),[](int*p){std::cout<<"Deleting:"<<*p<<std::endl;deletep;});

    版权声明

    本文仅代表作者观点,不代表博信信息网立场。

    热门