gpt4 book ai didi

c++ - 如何删除二维double数组

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:03 24 4
gpt4 key购买 nike

我写了两个函数 - 一个创建二维双数组,另一个删除它。

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];

非常感谢您的帮助!

最佳答案

显而易见的解决方案是首先不使用数组。

如何创建一个 n x n 矩阵?

#include <iostream>
#include <vector>

using Row = std::vector<int>;
using Matrix = std::vector<Row>;

int main() {
size_t const n = 5;

Matrix matrix(Row(n), n);
}

简单吧?作为奖励,复制、移动和销毁都是免费提供的。

关于c++ - 如何删除二维double数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15790576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com