shared_ptr相互引用的问题
来源:6-19 shared_ptr和weak_ptr代码演示
weixin_慕仔7197815
2023-12-15
请问下什么情况会产生shared_ptr的相互引用,从而知道用weak_ptr去避免相互引用;有实际的应用场景吗
写回答
1回答
-
quickzhao
2023-12-16
shared_ptr的相互引用通常发生在两个对象互相持有对方的shared_ptr实例时,这样会导致对象之间形成循环引用,当不再需要这两个对象时,它们也会因为互相持有shared_ptr而无法被释放,导致内存泄漏;引用对象之间形成的环状数据结构时常常会发生,比如图的节点相互引用,在这种情况下,如果节点之间使用
shared_ptr相互引用,可能会导致内存泄漏。使用weak_ptr则可以避免这种情况。
00
相似问题