C++ shared_ptr循环引用问题/解决方法
C++ shared_ptr循环引用问题/解决方法
关于shared_ptr/weak_ptr
首先可以看一下这篇文章
C++的智能指针-unique_ptr,shared_ptr,weak_ptr
循环引用问题
shared_ptr存在循环引用问题:
考虑下面这样一个代码

1 | |
sp1,sp2,next,prev均为shared_ptr类型的智能指针 :
sp1与sp2->prev都指向Node1,所以sp1的引用计数为2sp1->next与sp2都指向Node2,所以sp2的引用计数也为2
当我们想销毁这个链表或者说销毁一个结点的时候,我们需要将引用计数置为1,假如,我们要delete sp2这块空间,我们需要将sp2的引用计数置为1,就是说我们需要将sp1->_next这个指针销毁掉。把sp2->_next销毁, 就意味着先要把sp1销毁。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!