class B;//前向声明
class A
{
public:
shared_ptr<B>ptrB;
};
class B
{
public:
shared_ptr<A>ptrA;
};
int main()
{
shared_ptr<A> pa (new A());
shared_ptr<B> pb (new B());
pa->ptrB = pb;
pb->ptrA = pa;
//调试发现智能指针pa,pb的强引用计数都为2(strong refs),无法减少到零,释放内存,局部变量如下:
+ pb shared_ptr {ptrA=shared_ptr {ptrB=shared_ptr {ptrA=shared_ptr {ptrB={...} } [2 strong refs] [{_Uses=2 _Weaks=1 }] } [2 strong refs] [default] } [2 strong refs] [default] } [2 strong refs] [default] std::tr1::shared_ptr<B>
system("pause");
return 0;
}