标签:style blog color os 使用 ar sp div log
1.boost库的shared_ptr智能指针在使用中遇到了一个需要注意的地方
1 typedef boost::shared_ptr<A> APtr 2 class A 3 { 4 public: 5 void FunA() 6 { 7 m_pB->FunB1(APtr(this)); 8 m_pB->FunB2(this); 9 } 10 11 private: 12 B * m_pB; 13 } 14 15 class B 16 { 17 void FunB1(APtr pA); 18 void FunB2(A * pA); 19 } 20 21 class Manager 22 { 23 vector<APtr> m_vecA; 24 }
如果在FunA中调用FunB1的话,由于APtr(this)是一个临时变量,在调用后,智能指针内存会被释放,并且内部的引用计数为1,也会释放A的内存,在Manager中再次调用A时便会出现内存泄露。应该使用FunB2这种调用方法。
标签:style blog color os 使用 ar sp div log
原文地址:http://www.cnblogs.com/justkong/p/4019480.html