给 weak_ptr 赋值(转化成 weak_ptr )的shared_ptr 称作管理该 weak_ptr 的 shared_ptr。如果该 shared_ptr 释放了,那么还可以通过它原来管理的 weak_ptr 去访问对象吗?
时间: 2023-11-20 12:07:47 浏览: 113
weak-ptr 和 shared-ptr 源码
如果该 shared_ptr 释放了,那么访问对象的操作会抛出 std::bad_weak_ptr 异常。因为在 shared_ptr 释放时,会检查是否还有其他的 shared_ptr 或者 weak_ptr 指向该对象,如果没有,则该对象会被销毁,同时所有指向该对象的 weak_ptr 都会被置为 nullptr。
阅读全文