Skip to content

Latest commit

 

History

History
34 lines (21 loc) · 876 Bytes

12. 动态内存.md

File metadata and controls

34 lines (21 loc) · 876 Bytes

12. 动态内存

12.1. 智能指针

智能指针的行为类似常规指针, 重要的区别在于它负责自动释放所指向的对象.

shared_ptr
  • 允许多个指针指向同一个对象.

  • 我们可以认为每个 shared_ptr 都有一个关联的计数器, 通常称其为引用计数. 一旦一个 shared_ptr 的计数器变为 0, 他就会自动释放自己所管理的对象.

unique_ptr
  • "独占" 所指向的对象.
weak_ptr
  • weak_ptr 是一种弱引用, 指向 shared_ptr 所管理的对象.

  • 可打破环状引用 (cycles of references, 两个其实已经没有被使用的对象彼此相互指向, 使之看似还在 “被使用” 的状态) 的问题.

make_shared
  • make_shared 在动态内存中分配一个对象并初始化它, 返回指向此对象的 shared_ptr.