gpt4 book ai didi

c++ - 未处理的异常

转载 作者:行者123 更新时间:2023-11-28 08:12:48 24 4
gpt4 key购买 nike

我尝试实现 http://www.cprogramming.com/tutorial/game_programming/same_game_part1_p2.html 中描述的游戏.尽管它最初运行良好,但从某个时候到现在在运行时崩溃,而构建并未指示任何错误。该问题表现为“Unhandled Exception”-“Access violation reading location”这一行

return m_arrColors[m_arrBoard[row][col]];

在函数中

COLORREF CSameGameBoard::GetBoardSpace(int row, int col)
{
// Check the bounds of the array
if(row < 0 || row >= m_nRows || col < 0 || col >= m_nColumns)
return m_arrColors[0];
return m_arrColors[m_arrBoard[row][col]];
}

有什么可能的原因吗?

更新:

程序在第一次尝试访问时崩溃

m_arrColors[m_arrBoard[0][0]];

m_arrColors 和 m_arrBoard 由构造函数定义:

CSameGameBoard::CSameGameBoard(void)
:m_arrBoard(NULL),
m_nColumns(15), m_nRows(15),
m_nHeight(35), m_nWidth(35)
{
m_arrColors[0] = RGB( 0, 0, 0);
m_arrColors[1] = RGB(255, 0, 0);
m_arrColors[2] = RGB(255,255, 64);
m_arrColors[3] = RGB( 0, 0,255);
}

更新 2: 我添加了命令 SetupBoard();在构造函数的主体中,它起作用了。但是教程没有提出http://www.cprogramming.com/tutorial/game_programming/same_game_part1_p2.html并且最初在我的程序中也没有它也能正常工作。

最佳答案

明显的原因是您正在访问数组的无效索引 - m_arrColorsm_arrBoard

例如,如果 m_arrBoard 的尺寸为 3x3,并且您尝试访问 m_arrBoard[3][3],您将获得崩溃(可能实际上是未定义的行为)。 - 请记住,C++ 数组是基于 0 的

使用调试器运行它,并检查是否发生这种情况。

关于c++ - 未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8558586/

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