首页 > 代码库 > boost::shared_ptr
boost::shared_ptr
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 B16 {17 void FunB1(APtr pA);18 void FunB2(A * pA);19 }20 21 class Manager22 {23 vector<APtr> m_vecA;24 }
如果在FunA中调用FunB1的话,由于APtr(this)是一个临时变量,在调用后,智能指针内存会被释放,并且内部的引用计数为1,也会释放A的内存,在Manager中再次调用A时便会出现内存泄露。应该使用FunB2这种调用方法。
boost::shared_ptr
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。