参考
C++ 智能指针 unique_ptr 详解与示例_彼此当年少,莫负好时光-CSDN博客_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);