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则可以避免这种情况。

0
0

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程