首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-08-15 
C++组合类内存泄露的问题class B{public:B(){}B(const B& b){std::coutcopy Bstd::endl}void say(

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 

热点排行