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

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

2012-12-17 
RPointerArray的ResetAndDestroy因为找不到析构函数而出现内存泄露今天偶然发现有个地方代码有重复,然后我

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
[解决办法]
瞎说,你同事也是。

热点排行