c ++错误:<project_name>触发了断点

时间:2016-12-29 07:19:49

标签: c++ visual-studio

运行和关闭此项目时如何解决此错误? 我写了一个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;

2 个答案:

答案 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;
  

字符串和容器自动分配/解除分配。但是,一个   指针容器并没有释放那些指针指向的东西。我们   必须循环通过那些来释放它们。

我刚刚简化了一些代码。