在std::shared_ptr的内部实现中,实际上有两个引用计数:强引用计数和弱引用计数。

  1. 强引用计数:记录有多少个shared_ptr实例共享同一个对象。当强引用计数变为0时,对象会被自动释放。
  2. 弱引用计数:记录有多少个weak_ptr实例引用同一个对象。弱引用计数不会影响对象的生命周期,但当强引用计数为0且弱引用计数也为0时,控制块会被释放。