删除字符矩阵

时间:2018-04-15 17:50:36

标签: c++ char delete-operator

我在删除字符矩阵时遇到问题, 我使用visual studio,一旦代码到达此行,我就会收到错误:

delete[] AlloBoard[i];

这是完整的代码:

#include <iostream>
using namespace std;
char** buildMat(int h, int w)
{
    char**mat;
    mat = new char*[w];
    for (int i = 0; i < w; i++)
        mat[i] = new char[h];
    return mat;
}
int main()
{
    char** AlloBoard=buildMat(4,5);
    for (int i = 0; i < 4; i++)
        for (int j = 0; j < 5; j++)
            AlloBoard[i][j] = 'x';
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 5; j++)
            cout << AlloBoard[i][j];
        cout << endl;
    }
     for (int i = 0; i < 5; i++)
        delete[] AlloBoard[i];
            delete[] AlloBoard;

            cout << "DONE" << endl;
}

感谢帮助!

1 个答案:

答案 0 :(得分:2)

您最初创建5个阵列,每个4个字符,但之后您将其视为4个阵列,每个5个字符。如果您打算使用这样的矩阵:

xxxxx
xxxxx
xxxxx
xxxxx

您需要更改

buildMat(4,5);

buildMat(5,4);

删除时,循环为4而不是5

for (int i = 0; i < 4; i++)
    delete[] AlloBoard[i];
        delete[] AlloBoard;

https://ideone.com/4cgCt3