C++ 避免共享ptr重定向
我将共享ptr和对共享对象的引用存储在包装器中。有人看到内存泄漏的可能性吗?只是小心点C++ 避免共享ptr重定向,c++,shared-ptr,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;
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;
};
B类;
甲级
{
公众:
typedef共享_ptrPB;
A(PB):
m_pb(pb),
m_b(*pb)
{ }
void someFunc()
{
//用m_b做点什么
}
PB getB()
{
返回m_pb;
}
//特别是,没有函数将ref返回给B
私人:
PB mu PB;
B&mèB;
};
我看不出任何问题,因为两个成员的作用域相同。但一般规则不建议使用引用或裸指针指向存储在共享_指针中的对象,因为该对象的生存期由共享指针管理,并且您很可能无法控制
注释中的注意事项KennyTM首先讲述了检查空指针。如果您想避免间接寻址,那么使用引用而不是指针将不会有任何区别。我认为引用重定向等同于指针重定向,它比共享\u ptr重定向更快?