c语言写五子棋程序时的问题

不明白为什么会出现这种情况,点那个小绿点就继续运行,搞不懂为什么是这样?需要怎么处理可以解决

img

mine这个变量在哪里定义的,这是说此变量所在的内存被破坏。

再函数进入时,会为所有变量分配内存,当在对内存进行操作时,修改了不属于自己的内存则称为越界,
例如:

  char str[10];
  str[10] = 1;

这样就称为越界,修改了未分配给你的内存,导致在函数返回时释放内存出现错误

应该是在初始化棋盘的循环的时候越界了
//for(int i = 0; i<size; i++)
注意在引用数组时是从0开始到(声明的大小-1)

【以下回答由 GPT 生成】

从你提供的代码来看,堆栈错误的原因很可能是由于InitBoard函数没有正确地初始化board数组。请确保InitBoard函数正确地初始化board数组,并且在函数内部不超出数组的边界。以下是我对InitBoard函数的实现,以解决这个问题:

void InitBoard(char board[ROWS][COLS], int rows, int cols) {
    for(int i = 0; i < rows; i++) {
        for(int j = 0; j < cols; j++) {
            board[i][j] = ' '; // 使用空格来表示空白格子
        }
    }
}

这个函数会将board数组中的每个元素都设为一个空格,即表示空白格子。请将你的InitBoard函数替换为以上实现,并重新尝试运行程序,看看是否解决了堆栈错误问题。

如果你还遇到其他问题,请提供更多详细信息,我会尽力提供帮助。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^