weak_ptr

在C++11标准中,除了unique_ptr和shared_ptr,智能指针还包括了weak_ptr这个类模板。weak_ptr的使用更为复杂一点,它可以指向shared_ptr指针指向的对象内存,却并不拥有该内存。使用weak_ptr成员函数lock,则可返回其指向内存的一个shared_ptr对象,且在所指对象内存已经无效时,返回空指针。

为什么会引入weak_ptr呢?它是为了解决shared_ptr循环依赖导致的内存问题而引入的。让我们考虑一个场景,有两个类A和B,都包含指向对方类的shared_ptr指针,这样A指向B,B指向A,引用计数永远不会达到零,两个对象也永远不会被删除。

weak_ptr

引入weak_ptr后,声明weak_ptr的类不共享所有权,但是它可以通过lock方法访问这些对象。通过weak_ptr,可以打破A和B之间的循环依赖。

weak_ptr


相关文章:

  • 2022-12-23
  • 2021-08-05
  • 2021-10-14
  • 2021-10-29
  • 2022-02-18
  • 2021-05-31
  • 2021-12-29
猜你喜欢
  • 2021-09-14
  • 2021-09-28
  • 2021-08-23
  • 2021-06-12
  • 2021-10-26
  • 2021-08-15
相关资源
相似解决方案