tjstod   3년 전

(+동적할당 에러가 아닌 인덱스 접근에 문제가 있었습니다. 

얼음을 녹이는 처리를 하기 전의 2차원 배열과 처리 후의 배열을 구별하기 위해 배열을 두 개 선언하고 각각 포인터로 가리킨 다음 얼음을 녹이는 처리 후에 포인터를 바꿨습니다. 배열a를 바탕으로 b를 만들고 다음에는 b를 바탕으로 a를 만들도록요.

그래서 포인터 선언시에 new로 바로 할당했는데(21번 줄) 6%에서 런타임 에러가 났습니다. 몇번 시도해 보다가 먼저 배열을 선언하고 나중에 포인터가 가리키게 하니 맞았습니다.

오류코드의 문제점이 무엇인지 알려주시면 감사하겠습니다.

djm03178   3년 전

어느 쪽이든 문제가 있고, 한 쪽만 통과되는 건 운입니다.

map_b[i][j] - !map_b[i + dx[0]][j + dy[0]] - !map_b[i + dx[1]][j + dy[1]] - !map_b[i + dx[2]][j + dy[2]] - !map_b[i + dx[3]][j + dy[3]] 등과 같은 것은 음수 인덱스를 참조하게 되기 때문에 undefined behavior가 발생합니다.

tjstod   3년 전

감사합니다! trv함수 내에서의 인덱스만 생각했지, main함수에서는 생각을 못했네요! 수정하여 맞았습니다.

댓글을 작성하려면 로그인해야 합니다.