智能指针的行为类似常规指针, 重要的区别在于它负责自动释放所指向的对象.
shared_ptr
-
允许多个指针指向同一个对象.
-
我们可以认为每个 shared_ptr 都有一个关联的计数器, 通常称其为引用计数. 一旦一个 shared_ptr 的计数器变为 0, 他就会自动释放自己所管理的对象.
unique_ptr
- "独占" 所指向的对象.
weak_ptr
-
weak_ptr 是一种弱引用, 指向 shared_ptr 所管理的对象.
-
可打破环状引用 (cycles of references, 两个其实已经没有被使用的对象彼此相互指向, 使之看似还在 “被使用” 的状态) 的问题.
make_shared
- make_shared 在动态内存中分配一个对象并初始化它, 返回指向此对象的 shared_ptr.