shared_ptr 是一个共享所有权的智能指针,允许多个指针指向同一个对象。
shared_ptr
使用引用计数,每一个shared_ptr的拷贝都指向相同的内存。每使用它一次,内部的引用计数加1,每析构一次,内部的引用计数减1,减为0时,释放所指向的堆内存。shared_ptr内部的引用计数是安全的,但是在多线程时对象的读取需要加锁。
13.3.1 shared_ptr初始化
shared_ptr有如下三种初始化方式:
- 裸指针直接初始化,但不能通过隐式转换来构造,因为shared_ptr构造函数被声明为explicit;
- 允许移动构造,也允许拷贝构造;
- 通过
make_shared
构造。
为了更好的了解智能指针,我们从最简单的例子内存申请开始,先看看下面的代码
#include #include