C++组合类内存泄露的问题
class B
{
public:
B(){;}
B(const B& b){std::cout<<"copy B"<<std::endl;}
void say(){std::cout<<"Running"<<std::endl;}
};
class A
{
public:
A():ptr(NULL){}
~A(){delete ptr;}
B* func(){ ptr = new B; return ptr;}
private:
B* ptr;
};
int main()
{
A* bb=new A;
B* c = bb->func();
delete bb;
c->say();
}
代码风格不是很好请见谅
问题描述:
delete bb
调用 析构 delete ptr
但是实际上c的指针并没有随之释放为什么呢?
[解决办法]
楼主判断是否释放的方法是不正确的,请你试试:
((B*)NULL)->say(); // 保证也会正常输出Running