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];
非常感谢您的帮助!
你可以制作一个小**完整的程序,展示这个问题? –
有什么理由不使用'std :: vector>'? –
Xymostech
这就是做这件事的方法。还有别的,这是错误的。例如,'deleteMatrix'中的无效指针'a'。在'deleteMatrix'中,你可以尝试打印所有值来查看,还有其他的错误。 –