欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

rpointerarray的resetanddestroy由于找不到析构函数而出现内存泄露

更新时间: 2014-01-05 02:40:57 责任编辑: Author_N1

 

RPointerArray的ResetAndDestroy因为找不到析构函数而出现内存泄露
今天偶然发现有个地方代码有重复,然后我就把C1注销。
class C1
{
...
};

把C0的指针数组RPointerArray<C1> iArray;改成RPointerArray<C2> iArray;
class C0

  RPointerArray<C1> iArray;
};

增加声明 class C2; c2在另外一个文件中定义的。
因为c1和c2非常类似,就用一个类了。

在使用时,引用了c0、c2的头文件。编译和运行都是正确的,但是退出程序出现内存泄露。

调试了一下发现是iArray.ResetAndDestroy();无法调用c2的析构。
主要是因为实现C0的cpp文件中没有包含定义c2的头文件,而使用C0的cpp包含了该头文件。从而出现了可以读存数据但无法销毁数据的情况。

听同事说iPhone开发过程不小心也会出现这个问题,在这里和各位分享一下。


--参考方法--
要是有继承关系的话 基类的析构函数也要参与其中吧 还要记得把C2的析构函数加virtual
--参考方法--
瞎说,你同事也是。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:40:57
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/13106/
本文WWW.DOC100.NET DOC100.NET版权所有。