宿題のためにバックトラック問題を書いていますが、最後のコードを除いてすべてのコードが機能しdelete[]
ます。
/*Assg4.cc*/
int main()
{
//removed irrelevant code - see pastebin links if needed
void *data = &datavector;
bool finished = false;
bool* continuance = &finished;
int *a = new int[n+1];
for(int i=0; i<n; i++)
{
a[i] = NULL;
}
delete []a;
delete continuance;
return 0;
}
次のエラーが表示されます。
*** glibc が検出されました *** ./Assg4: free(): 無効なポインター: 0xbfc7098f ***
この関数は、ある時点でbacktrack()
配列の内容を埋めるだけであり、配列a[]
を削除、拡張、または縮小することはありません。コメントアウトしてもエラーが発生しないため(そしてすべての計算の結果が正しいため)、最後の削除に問題があることはわかっています。私は何を間違っていますか?
Pastebin フル ファイル: