温馨提示×

c++ unique_ptr的用法是什么

c++
小亿
85
2024-02-29 16:20:17
栏目: 编程语言

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

unique_ptr的用法如下:

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

0