读书人

C++组合类内存泄露的有关问题

发布时间: 2012-08-15 16:57:17 作者: rapoo

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的指针并没有随之释放为什么呢?

[解决办法]
楼主判断是否释放的方法是不正确的,请你试试:

C/C++ code
((B*)NULL)->say();   // 保证也会正常输出Running 

读书人网 >C++

热点推荐