私は、人々とその会社のデータベースを実装するプログラムを持っています。クラスメンバの動的配列ではなく、クラスメンバへのポインタの動的配列を作成しました。原因はコピーが原因です。不一致削除
私は動作しますが、valgrindの不一致はデストラクタで削除を示すバージョン(デシベルを削除)CCompany** db;
~CCompanyIndex (void)
{
for(unsigned i=0;i<len;i++)
{
/*cout<<"dealloc:"<<db[i]<<endl;*/
delete db[i];
}
delete db;
}
CCompanyIndex (void)
{
max=1000;
len=0;
db=new CCompany*[max];
}
私は
CCompany* newIt=new CCompany(oName,oAddr,cName,cAddr);
を追加するためにも使用だから私は、私が以前に正しい考える次のコードを試してみましたている
~CCompanyIndex (void)
{
delete [] db;
}
しかし、メソッドを追加することによって割り当てられたすべてのメモリは割り当て解除されません。
(1)あなたは[三の規則](http://stackoverflow.com/questions/4172722/what-is-the-rule-of-three)に精通していますか? (2)生ポインタと動的に割り当てられたメモリの代わりにスマートポインタとコンテナを考慮しましたか? –