删除字符矩阵
Deleting char matrix
我在删除字符矩阵时遇到问题,
我正在使用 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;
}
感谢您的帮助!
您最初创建了 5 个数组,每个数组包含 4 个字符,但随后您将其视为每个数组包含 5 个字符的 4 个数组。如果您的意图是拥有这样的矩阵:
xxxxx
xxxxx
xxxxx
xxxxx
你需要改变
buildMat(4,5);
到
buildMat(5,4);
删除时,循环到 4 而不是 5
for (int i = 0; i < 4; i++)
delete[] AlloBoard[i];
delete[] AlloBoard;
我在删除字符矩阵时遇到问题, 我正在使用 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;
}
感谢您的帮助!
您最初创建了 5 个数组,每个数组包含 4 个字符,但随后您将其视为每个数组包含 5 个字符的 4 个数组。如果您的意图是拥有这样的矩阵:
xxxxx
xxxxx
xxxxx
xxxxx
你需要改变
buildMat(4,5);
到
buildMat(5,4);
删除时,循环到 4 而不是 5
for (int i = 0; i < 4; i++)
delete[] AlloBoard[i];
delete[] AlloBoard;