我不断收到此错误,这让我越来越沮丧,请帮助我

1 c++ runtime-error nullpointerexception

第 1034 行:字符 9:运行时错误:引用绑定到类型 'std::vector<int, std::allocator>' (stl_vector.h) 的空指针摘要:UndefinedBehaviorSanitizer:未定义行为 /usr/bin/../ lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:1043:9

void gameOfLife(vector<vector<int>>& board) {
   vector<vector<int>> newBoard;
    for(int i = 0; i < board.size(); i++){
        for(int j = 0; j < board[i].size(); j++){
            if(board[i][j] == 0 && neibSum(board,i,j) == 3)
                newBoard[i][j] = 1;
            else if(board[i][j] == 1 && neibSum(board,i,j) > 3)
                newBoard[i][j] = 0;
            else if(board[i][j] == 1 && neibSum(board,i,j) < 2)
                newBoard[i][j] = 0;
            else
                newBoard[i][j] = 1;
        }
    }
    for(int i = 0; i < board.size(); i++){
        for(int j = 0; j < board[i].size(); j++){
            cout << newBoard[i][j] << " ";
        }
        cout << endl;
    }
    
}
Run Code Online (Sandbox Code Playgroud)

ben*_*999 5

您的变量“newboard”是一个大小为 0 的向量。在:

newBoard[i][j] = 1;
Run Code Online (Sandbox Code Playgroud)

您正在尝试访问未分配的内存。您需要首先分配内存(例如使用调整大小)。

newBoard[i][j] = 1;
Run Code Online (Sandbox Code Playgroud)

编辑:ps,您可以使用 .at() 函数而不是 [] 来访问向量元素: newBoard.at(i).at(j) 这包含边界检查。它不会解决您的问题,但会给您一个更容易理解的错误消息。