专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C++

c++内存释放解决办法

发布时间:2011-06-28 13:39:35 文章来源:www.iduyao.cn 采编人员:星星草
c++内存释放
class abc{
public:
abc2 *_abc2;
void set(){
_abc2=new abc2();
}
};

abc *_abc=new abc();
_abc->set();
...
........
delete _abc;

我想问,delete _abc后会不会里面的内存都会释放?要不要再delete _abc2;
------解决方案--------------------
有一个new就要有一个delete 数量必须相等
------解决方案--------------------
有个题外话,初始化为0是不是更好点,另外释放内存的时候,delete完成之后还要把指针赋为0,因为有些编译器delete执行之后,指针指向的不是NULL,而是一个不合法的内存地址
------解决方案--------------------
给set写一个对应的Release函数,用于释放_abc2所指向的内存。比如:
class abc
{
public:
    abc() : _abc2(0) {}


    void Create()
    {
        if (0 == _abc2)
            _abc2 = new abc2();
    }

    void Release()
    {
        if (0 != _abc2)
        {
            delete _abc2;
            _abc2 = 0;
        }
    }

private:
    abc2 *_abc2;
};


    abc *_abc = new abc();
    _abc->Create();
    ...
    _abc->Release();
    delete _abc;
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: