代码中存在的主要内存错误是二维数组的索引越界。在 processMouseEvt
和 drawFrame
方法中,数组 state
被错误地索引了。数组的大小是 cell_col + 2
和 cell_row + 2
,这意味着索引应该从 0 到 cell_col + 1
和从 0 到 cell_row + 1
。但是,在这些方法中,索引是从 1 开始的,这将导致数组访问越界。
以下是具体的内存错误和修正方法:
-
processMouseEvt 方法:
- 错误:
state[state_index][x + 1][y + 1]
- 修正:应该使用
state[state_index][x][y]
来设置鼠标点击的单元格状态。
- 错误:
-
drawFrame 方法:
- 错误:
state[state_index][i + 1][j + 1]
- 修正:应该使用
state[state_index][i][j]
来获取当前单元格的状态以绘制。
- 错误: