运行和关闭此项目时如何解决此错误? 我写了一个c ++程序,它有这个错误: 触发了一个断点。
int num = 0;
string **board = new string*[num];
cin >> num;
system("cls");
for (int i = 0; i < num; i++)
board[i] = new string[num];
for (int i = 0; i < num; i++)
for (int j = 0; j < num; j++)
board[i][j]='_';
for (int i = 0; i < num; i++)
{
if(i!=0)
cout << endl<< endl<<endl<< endl;
for (int j = 0; j < num; j++)
cout << board[i][j]<<" ";
}
cin.get();
cin.get();
for (int i = 0; i < num; i++)
delete[] board[i];
delete[] board;
return 0;
答案 0 :(得分:2)
声明
string **board = new string*[num];
cin >> num;
后,需要定位。
否则,您将尝试分配零长度指针数组;在C ++中没有明确定义。
接下来,您可能会发现将整个板建模为单个std::vector<std::string>
更为简单,这将大大简化内存管理。
答案 1 :(得分:1)
int num = 0;
cin >> num;
string *board = new string[num]; // here
system("cls");
for (int i = 0; i < num; i++)
board[i] = string(n,'_');
for (int i = 0; i < num; i++)
{
if(i!=0)
cout << endl<< endl<<endl<< endl;
for (int j = 0; j < num; j++)
cout << board[i][j]<<" ";
}
cin.get();
cin.get();
delete[] board;
return 0;
字符串和容器自动分配/解除分配。但是,一个 指针容器并没有释放那些指针指向的东西。我们 必须循环通过那些来释放它们。
我刚刚简化了一些代码。