delete []
由于我开始在其他人的代码中看到内存泄漏错误,我启用了堆调试,并且在调用下面的代码之后,我将问题(至少,我认为)归结为类的析构函数。
MyClass::~MyClass() {
delete [] my_class_member_;
}
现在我确认 my_class_member_ 是一个指向结构对象的指针数组,例如,MyStruct
已经分配了属性,new []
所以我不确定是什么导致了这个泄漏?这是new []
调用的样子:
delete [] my_class_member_;
my_class_member_ = new MyStruct[somesize_];
接下来,structMyStruct
也比较简单,如下(精简):
struct MyStruct {
MyStruct() {}
~MyStruct() {
for( PtrList<PClass>::iterator it(ps); it.more(); it.next() ) {
delete it.cur();
}
for( PtrList<RClass>::iterator it(rs); it.more(); it.next() ) {
delete it.cur();
}
delete shift;
}
PtrList<PClass> ps;
PtrList<RClass> rs;
};
现在PtrList
是一个指针列表(我们正在使用的应用程序 devkit 的内置类型)。我很确定这不会有错。无论如何,有人注意到这里有什么不正常的地方吗?欣赏任何见解..