什么是shared_ptr的死锁问题
时间: 2023-11-04 11:46:46 浏览: 123
C++ unique_ptr weak_ptr shared_ptr auto_ptr智能指针.doc
5星 · 资源好评率100%
shared_ptr 的死锁问题是指当多个 shared_ptr 被强制释放时,可能会导致循环引用,从而导致内存泄漏。具体来讲,当一个对象中包含多个 shared_ptr 对象时,如果它们彼此相互引用,当所有 shared_ptr 对象的引用计数都为 0 时,它们都会调用自己的析构函数,但由于彼此之间互相持有对方的引用,它们都无法被正确地释放,从而导致内存泄漏。为避免 shared_ptr 的死锁问题,可以使用 weak_ptr 来打破循环引用,也可以使用 std::enable_shared_from_this 来获取 shared_ptr,从而避免循环引用。
阅读全文