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 协议 ,转载请注明出处!