他の誰かのコードで見始めたメモリリークエラーのためにヒープデバッグを有効にし、delete []
以下の呼び出しの直後に、クラスのデストラクタに問題を特定しました(少なくともそう思います)。
MyClass::~MyClass() {
delete [] my_class_member_;
}
ここで、構造体のオブジェクトへのポインタの配列であるmy_class_member_が、MyStruct
を使用してプロパティに割り当てられているnew []
ことを確認したので、このリークの原因がわかりません。new []
呼び出しは次のようになります。
delete [] my_class_member_;
my_class_member_ = new MyStruct[somesize_];
次に、構造体MyStruct
も比較的単純で、次のようになります(削除)。
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
がポインタのリストです(私たちが使用しているアプリケーション開発キットの組み込み型)。私はそれが間違いではないことをかなり確信しています。とにかく、誰かがここで気づいたことは何かありますか?洞察に感謝します。