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)
您的变量“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)
这包含边界检查。它不会解决您的问题,但会给您一个更容易理解的错误消息。