我写了两个函数——一个创建二维双精度数组,另一个删除它。
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];
非常感谢你的帮助!