http://www.cprogramming.com/tutorial/game_programming/same_game_part1_p2.html에 설명 된 게임을 구현하려고합니다. 처음에는 잘 작동했지만 일부 시점부터는 런타임까지 충돌이 발생하지만 빌드가 오류를 나타내지는 않습니다. 기능처리되지 않은 예외
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]];
}
모든 가능한 이유에 라인
return m_arrColors[m_arrBoard[row][col]];
에 "액세스 위반이 위치를 읽고"- 문제는 "처리되지 않은 예외"로 나타 납니까?
업데이트 :
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 : 나는 추가
이 프로그램은이
m_arrColors[m_arrBoard[0][0]];
m_arrColors 및 m_arrBoard에 액세스하려고 처음으로 생성자에 의해 정의된다 충돌 명령 SetupBoard(); 생성자의 몸에서 그것을 작동하고 그것은 효과가 있었다. 그러나 그것은 튜토리얼 http://www.cprogramming.com/tutorial/game_programming/same_game_part1_p2.html에 의해 제안되지 않았고 처음에는 잘하지 않고 내 프로그램에서 잘 작동했습니다.
'm_arrColors' 및'm_arrBoard' 란 무엇입니까? 충돌이 일어 났을 때'row'와'col'은 무엇입니까? 확실히 너는 경계선을 벗어났다. – tenfour
'm_arrBoard [row] [col]'가 유효하다는 것을 확인 했습니까? 디버거에서 실행 해 보셨습니까? –