在 C++ 中调试分段错误
debug segmentation fault in c++
我需要帮助调试以下代码块。仅当我尝试将适当的 (char) 值分配给 squares[ i ][ j ] 时,此代码块才会给我一个分段错误。我该如何解决这个问题?
for(int i=0;i<sides;i++){
for(int j=0;i<sides;j++){
squares[i][j] = '';
}
}
我在嵌套 for 循环之前使用以下代码声明了数组 squares[][]:
char **squares = new(nothrow) char*[sides-1];
for(int i=0; i < sides-1; i++){
squares[i] = new char[sides-1];
}
多 更好的声明空字符串数组的方法是使用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] = '';
}
}
我强烈鼓励您尝试使用字符串来解决您的问题,而不是重新发明轮子。
(感谢 NathanOliver 和 jsantander 的帮助)
在您的声明中,尝试将 i < sides - 1 更改为 i < sides
char **squares = new(nothrow) char*[sides-1];
for(int i=0; i < sides; i++){
squares[i] = new char[sides-1];
}
我需要帮助调试以下代码块。仅当我尝试将适当的 (char) 值分配给 squares[ i ][ j ] 时,此代码块才会给我一个分段错误。我该如何解决这个问题?
for(int i=0;i<sides;i++){
for(int j=0;i<sides;j++){
squares[i][j] = '';
}
}
我在嵌套 for 循环之前使用以下代码声明了数组 squares[][]:
char **squares = new(nothrow) char*[sides-1];
for(int i=0; i < sides-1; i++){
squares[i] = new char[sides-1];
}
多 更好的声明空字符串数组的方法是使用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] = '';
}
}
我强烈鼓励您尝试使用字符串来解决您的问题,而不是重新发明轮子。 (感谢 NathanOliver 和 jsantander 的帮助)
在您的声明中,尝试将 i < sides - 1 更改为 i < sides
char **squares = new(nothrow) char*[sides-1];
for(int i=0; i < sides; i++){
squares[i] = new char[sides-1];
}