A.h
#include "B.h"
class A
{
public:
A();
virtual ~A();
public:
BPtr m_ptrB;
}
typedef boost::shard_ptr<A> APtr;
B.h
class B
{
public:
B();
virtual ~B();
public:
APtr m_ptrA;
}
typedef boost::shared_ptr<B> BPtr;
main.cpp
#include "A.h"
#include "B.h"
int main()
{
{
APtr ptrA = boost::make_shared<A>();//使用make_shared初始化
BPtr ptrB = boost::make_shared<B>();
//循环引用
ptrA->m_ptrB = ptrB;
ptrB->m_ptrA = ptrA;
}
}
资源创建完毕
ptrB指针变量释放
ptrA指针变量释放,内存泄漏发生