正常块错误后检测到堆损坏

时间:2019-05-15 06:59:45

标签: c++

当我运行此代码时,在指定的行处发生错误,N和N1在代码顶部定义了常量。谢谢

double **Agf, **Ahf;////////N*N1 Matrix/////////
    Agf = new double*[N1]; for (int ii = 0; ii < N; ii++)Agf[ii] = new double[N1];
    Ahf = new double*[N1]; for (int ii = 0; ii < N; ii++)Ahf[ii] = new double[N1];
    for (int i = 0; i < N; i++){ for (int j = 0; j < N1; j++){Agf[i][j] = Ahf[i][j] = 0; } }

    for (int ii = 0; ii < N; ii++)
    {
    delete[] Agf[ii];
    delete[] Ahf[ii];
    }
    delete[] Agf;// error occurs here
    delete[] Ahf;

1 个答案:

答案 0 :(得分:1)

假设您要使用N * N1矩阵,那么问题出在代码的第2行和第3行。您需要进行如下更改:

Agf = new double*[N]; for (int ii = 0; ii < N; ii++)Agf[ii] = new double[N1];
Ahf = new double*[N]; for (int ii = 0; ii < N; ii++)Ahf[ii] = new double[N1];

您需要使用行数初始化数组,然后使用列数初始化数组。