参考
C++ 智能指针 unique_ptr 详解与示例_彼此当年少,莫负好时光-优快云博客_c++ unique_ptr
new出来的对象是位于堆内存上的,必须调用delete才能释放其内存。
unique_ptr 是一个装指针的容器,且拥有关联指针的唯一所有权,作为普通变量使用时系统分配对象到栈内存上,超出作用域时会自动析构,unique_ptr对象的析构函数中会delete其关联指针,这样就相当于替我们执行了delete堆内存上的对象。
| 成员函数 | 作用 |
|---|---|
| reset() | 重置unique_ptr为空,delete其关联的指针。 |
| release() | 不delete关联指针,并返回关联指针。释放关联指针的所有权,unique_ptr为空。 |
| get() | 仅仅返回关联指针 |
unique_ptr不能直接复制,必须使用std::move()转移其管理的指针,转移后原 unique_ptr 为空。std::unique_ptr<Task> taskPtr4 = std::move(taskPtr2);
创建unique_ptr对象有两种方法:
//C++11:
std::unique_ptr<Task> taskPtr(new Task(23));
//C++14:
std::unique_ptr<Task> taskPtr = std::make_unique<Task>(34);

本文详细介绍了C++中的unique_ptr,它用于管理堆内存上的对象,确保了唯一所有权。unique_ptr在超出作用域时会自动析构并删除关联对象,提供了reset()、release()等成员函数进行操作。创建unique_ptr可以通过new运算符或C++14的make_unique()。此外,unique_ptr不可直接复制,但可通过std::move()转移所有权。
3427

被折叠的 条评论
为什么被折叠?



