2 つの関数を作成しました。1 つは 2 次元 double 配列を作成するためのもので、もう 1 つはそれを削除するためのものです。
double** createMatrix(int n)
{
double **a = new double *[n];
for (int i=0; i < n; i++)
a[i] = new double[n];
return a;
}
void deleteMatrix(double** a, int n)
{
for (int i=0; i < n; i++)
delete [] a[i]; // ERROR HERE
delete []a;
}
割り当てられた配列は正常に機能しています。しかし、それを解放しようとすると、(マークされた行で) エラーが発生します:「project2.exe がブレークポイントをトリガーしました。」Visual Studio 2012 を使用しています。
編集:完全なプログラムを作成しました:
int main()
{
const int n = 10;
double **m = createMatrix(n);
deleteMatrix(m, n);
return 0;
}
そして、それはうまく機能しています。また、私は自分の問題を見つけました。copyMatrix
関数のタイプミスでした。
for (int j=0; j <= n; j++) // should be < instead of <=
a[i][j] = originalMatrix[i][j];
助けてくれてどうもありがとう!