码迷,mamicode.com
首页 > 其他好文 > 详细

boost::shared_ptr

时间:2014-10-11 20:26:26      阅读:198      评论:0      收藏:0      [点我收藏+]

标签: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这种调用方法。

boost::shared_ptr

标签:style   blog   color   os   使用   ar   sp   div   log   

原文地址:http://www.cnblogs.com/justkong/p/4019480.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!