我在包装器中存储共享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;
};
答案 0 :(得分:2)
我认为没有任何问题,只要两个成员都有相同的范围。但是一般规则并不建议使用引用或裸指针指向存储在shared_pointer中的对象,只要对象的生命周期由共享指针管理,并且你很有可能让事情无法控制。
P.S。在评论中,KennyTM首先讲述了对NULL指针的检查。