0x004069f1 in Space::setPosition (this=0x77733cee, x=-65, y=-49) at space.h:44
0x00402679 in Checkers::make_move (this=0x28cbb8, move=...) at checkers.cc:351
0x00403fd2 in main_savitch_14::game::make_computer_move (this=0x28cbb8) at game.cc:153
0x00403b70 in main_savitch_14::game::play (this=0x28cbb8) at game.cc:33
0x004015fb in _fu0___ZSt4cout () at checkers.cc:96
0x004042a7 in main () at main.cc:34
你好,我正在为一门课程编写游戏,但是遇到了段错误。卒子被保存在一个二维数组中,所以问题似乎出在了数组的无效x/y位置上。移动是作为字符串传递的,然后会将其转换为整数,因此x和y可能会变成ASCII NULL。我注意到在函数调用make_move中,它说move=...?还有,如何解决段错误的其他快速技巧?我对GDB有点陌生。
std::vector
这样的东西,它会在越界时抛出一个易于识别的异常(并且在使用at()
时可以避免你管理内存)。其次,你应该能够设置变量监视器来观察x和y的变化,并查找它们何时变得无效,如果确实是这种情况。 - chris