gpt4 book ai didi

c++ - 程序在 Debug 中运行良好,但在 Release 中运行不正常

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:27 25 4
gpt4 key购买 nike

我制作了一个井字游戏,效果很好。最近我决定添加重置游戏功能。这是我从用户那里获取输入的部分

void playerMove() //Gets the player move and updates the box variables
{
int boxnumber;
while(1) //Set's loop if the player enters a invalid input
{
cout << "\n Player " << player << "'s turn!(Press 0 to reset the game!): ";
cin >> boxnumber;
if(box[boxnumber-1] == 'X' || box[boxnumber-1] == 'O' || boxnumber > 9 || boxnumber < 0) // Checks if the input is valid or not
{
system("CLS");//If invalid, show error and loop back to start to get new input
displayBoard();
cout << "\n Invalid Input! Try again!\n";

}else if(boxnumber == 0)
{
refreshGame();
displayBoard();
}else
{
box[boxnumber-1] = player;//If inputs are fine, set the box variable's and break out of loop!
break;
}
}

}

现在,在 Debug模式下,当我按 0 时,一切运行正常并且游戏被重置,但在发布版本中,当我按 0 时,它会给我“无效输入!再试一次!”

我尝试过但没有用的东西:-重建整个发布和调试版本。-制作一个新项目并复制粘贴我的代码。同样的事情,调试工作,发布不。

对于任何想知道的人,我正在使用 code::blocks IDE。编译器是 GNU GCC。谢谢您的帮助! :)

最佳答案

你有未定义的行为

在“第一个”if 中,您有 box[boxnumber-1],因此当您输入 0(如您在你的问题),你正在尝试访问索引为 -1 的元素。这是 UB,因为您正在读取“无效”内存。

您应该首先检查 0(以及负数)。

关于c++ - 程序在 Debug 中运行良好,但在 Release 中运行不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39413092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com