注:最初は、コードの一部がリークを引き起こしていると思っていましたが、それは正しくないことが判明しました。したがって、以下のコメント。質問を更新しました
考えられる解決策:私はなんとかこれを解決することができました。私がしたことは、すべての初期化を関数の先頭に移動することでした。対応する削除コードに出くわしたときに、それらを一枚の紙にリストし、それらを削り取りました。このように1.削除を見逃しませんでした2.ループ内で何も初期化していないことを確認しました数バイトを除くすべてのリークを排除することができました。更新されたコード:http ://sharetext.org/gPJf 以下にある「前の」コード:
私がエラーに直面している関数はこれです: http ://sharetext.org/3gq0
コメントから、初期化と削除が適切でない可能性があることがわかりました。これは味を担当するコードです
float** CMemAlloc::init_2Dfloat(int rows,int cols)
{
float **a;
a=new float*[rows];
for(int j=0;j<rows;j++)
a[j]=new float[cols];
for(int i=0;i<rows;i++)
for(int j=0;j<cols;j++)
a[i][j]=0.0;
return a;
}
void CMemAlloc::del_float(float **a,int rows)
{
if(a!=NULL)
{
for (int i = 0; i <rows; i++) {
delete[] a[i];
a[i] = NULL;
}
delete[] a;
a=NULL;
}
else
{
return;
}
}
この機能ペアが誤動作していると思われます。
CCoarseFun::window** CCoarseFun::init_2Dwin(int rows,int cols)
{
window** a;
a=new window*[rows];
for(int j=0;j<rows;j++)
a[j]=new window[cols];
for(int i=0;i<rows;i++)
{
for(int j=0;j<cols;j++)
{
a[i][j].line_high=0;
a[i][j].line_low=0;
a[i][j].pixel_high=0;
a[i][j].pixel_low=0;
}
}
return a;
}
void CCoarseFun::del_win(window ** a, int rows)
{
for(int i=0;i<rows;i++)
{
delete [] a[i];
a[i] = NULL;
}
delete[] a;
a=NULL;
}
ここでエラーが発生する可能性がありますか?
注:トレースステートメントをさまざまなポイントに配置し、「ブロック」のアドレスを出力しています。出力は次のとおりです:http ://sharetext.org/ODSv
私が現在試しているのは、ループ内からすべての初期化を削除することです。