当检查变量和0是否相等时,给出段错误(调试时)

C++ When checking for equality between a variable and 0, gives segment fault (when debugging)

本文关键字:变量 段错误 错误 调试 检查 是否      更新时间:2023-10-16

假设我有一个这样的数组:

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,同样的问题。

将"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);
}

就是这样填充的

似乎您正在访问数组边界之外的内存。如果tab[0][?]== var.这将导致您的条件检查选项卡[-1][?]]并产生异常。