C++ C++;检查变量和0之间是否相等时,给出段错误(调试时)
假设我有这样一个数组:C++ C++;检查变量和0之间是否相等时,给出段错误(调试时),c++,C++,假设我有这样一个数组: 1 0 0 0 2 1 0 1 0 因此,我想检查2上面的数字是否为0,如果为真,则将其更改为2。假设i=1和j=1: string var = "2"; if(tab[i][j] == var && tab[i-1][j] == "0") { tab[i-1][j] = "2"; } 这里是我得到段错误的地方,如果我在if语句中将0改为1,它就可以正常工作。为什么?甚至尝试将2d数组设置为int,同样的问题 for(int i = 0
1 0 0
0 2 1
0 1 0
因此,我想检查2上面的数字是否为0,如果为真,则将其更改为2。假设i=1和j=1:
string var = "2";
if(tab[i][j] == var && tab[i-1][j] == "0") {
tab[i-1][j] = "2";
}
这里是我得到段错误的地方,如果我在if语句中将0改为1,它就可以正常工作。为什么?甚至尝试将2d数组设置为int,同样的问题
for(int i = 0; i < n; i++) {
vector<string> current_row;
for(int j =0; j < m; j++) {
myfile >> buff;
current_row.push_back(buff);
}
tab.push_back(current_row);
}
将“0”更改为“0”或反之亦然=相同的问题
for(int i = 0; i < n; i++) {
vector<string> current_row;
for(int j =0; j < m; j++) {
myfile >> buff;
current_row.push_back(buff);
}
tab.push_back(current_row);
}
for(int i=0;i>buff;
当前行。推回(buff);
}
tab.推后(当前行);
}
这就是我填充它的方式。似乎您正在访问数组边界之外的内存。有一件事可能会导致这种情况,那就是如果tab[0][?]==var。这会导致您的条件检查tab[-1][?],并生成一个异常。似乎您正在访问数组边界之外的内存。可能导致这种情况的一个原因是如果tab[0][?]==var。这会导致您的条件检查tab[-1][?],并生成一个异常。如何声明
tab
?std::vector tab;我认为您应该显示实际填充选项卡的代码部分
如何填充?A可能会有帮助。看起来问题仍然存在于您没有向我们展示的代码中。你能发布一个完整的小程序来演示这个问题吗?你如何声明tab
?std::vector tab;我认为您应该显示实际填充选项卡的代码部分
如何填充?A可能会有帮助。看起来问题仍然存在于您没有向我们展示的代码中。你能发布一个完整的小程序来演示这个问题吗?