*本篇讨论一下因为智能指针的交叉引用造成的内存泄漏问题和解决方法。。。→_→*
讨论这个问题之前,先来看一段简单的代码
#include <iostream>
#include <memory>
using namespace std;
class B;
class A
{
public:
shared_ptr<B> _bptr;
};
class B
{
public:
shared_ptr<A> _aptr;
};
int main()
{
shared_ptr<A> aptr(new A());
shared_ptr<B> bptr(

本文探讨了智能指针(特别是shared_ptr)在交叉引用情况下导致的内存泄漏问题,并提出通过使用weak_ptr来解决这一问题。当类A和类B互相持有对方的shared_ptr时,会造成引用计数无法降为0,进而导致内存泄漏。通过将这些shared_ptr替换为weak_ptr,可以避免引用计数增加,确保对象在不再被引用时正确析构,从而防止内存泄漏。
最低0.47元/天 解锁文章
1157

被折叠的 条评论
为什么被折叠?



