避免shared_ptr重定向

时间:2012-02-29 15:55:56

标签: c++ shared-ptr

我在包装器中存储共享ptr和对共享对象的引用。有没有人看到内存泄漏的可能性?只是谨慎......

class B;
class A
{
public :
  typedef shared_ptr< B > PB;
  A( PB pb ) :
    m_pb( pb ),
    m_b( *pb )
  { }

  void someFunc()
  {
    // do something with m_b
  }

  PB getB()
  { 
    return m_pb; 
  }
  // in particular, no function returns a ref to B

private :
  PB m_pb;
  B &m_b;

};

1 个答案:

答案 0 :(得分:2)

我认为没有任何问题,只要两个成员都有相同的范围。但是一般规则并不建议使用引用或裸指针指向存储在shared_pointer中的对象,只要对象的生命周期由共享指针管理,并且你很有可能让事情无法控制。

P.S。在评论中,KennyTM首先讲述了对NULL指针的检查。