在c ++中调试分段错误

时间:2015-04-24 12:25:37

标签: c++ debugging multidimensional-array segmentation-fault

我需要帮助调试以下代码块。只有当我尝试为square [i] [j]分配适当的(char)值时,这段代码才会给出分段错误错误。我该如何解决这个问题?

for(int i=0;i<sides;i++){
    for(int j=0;i<sides;j++){
        squares[i][j] = '';
    }
}  

我在嵌套的for循环之前使用以下代码声明了数组square [] []:

char **squares = new(nothrow) char*[sides-1];
for(int i=0; i < sides-1; i++){
    squares[i] = new char[sides-1];
}

2 个答案:

答案 0 :(得分:2)

很多声明空字符串数组的更好方法是使用String[]不要忘记你在C ++中。 在您的情况下,由于您似乎想要制作正方形数组,因此如果已知大小,则可以使用std::array,对于未知大小,可以使用std::vector。 现在,对于严格的答案,在第二个循环中使用j而不是i。

for(int i=0;i<sides - 1;i++){
    for(int j=0;j<sides - 1;j++){
        squares[i][j] = '';
    }
}  

强烈鼓励您尝试使用Strings查看问题,而不是重新发明轮子。 (感谢NathanOliver&amp; jsantander的帮助)

答案 1 :(得分:0)

在您的声明中,尝试更改i&lt;侧面 - 1到i&lt;边

char **squares = new(nothrow) char*[sides-1];
for(int i=0; i < sides; i++){
    squares[i] = new char[sides-1];
}
相关问题