我正在学习如何使用正确的指针和“智能指针”来防止内存泄漏。这是我正在分析的伪代码片段。ClassA和ClassB继承BaseClass;ExtClass只是一些外部类(与BaseClass无关)
main(){
ExtClass *extPtr = new ExtClass();
BaseClass *ptr = new ClassA();
extPtr->setPtr(ptr);
extPtr->fun();
...
if(change_object()) {
delete ptr;
ptr = new ClassB();
extPtr->setPtr(ptr);
extPtr->fun();
}
}
-------------------------------------
ExtClass {
private:
BaseClass *m_ptr;
public:
~ExtClass() { delete m_ptr; }
void ExtClass::fun(){
m_ptr->do_some_stuff();
}
void ExtClass::setPtr(BaseClass *ptr){
m_ptr = ptr;
}
}问题:
发布于 2014-04-05 11:42:18
好的,对于基类,如果退出函数,extPtr将被泄露。
要与另一个智能指针交换,我相信这就是您想要的:ptr/swap
顺便说一句,我在你的代码里没有看到任何聪明的实习生。
https://stackoverflow.com/questions/22880396
复制相似问题