joo1223   2년 전

seg fault가 뜨는데... 배열 메모리 관련 에러라고 알고 있는데요 어디서 오류가 난건가요 ? ㅠㅠ

choko100   2년 전

안녕하세요, q.push() 한 개수와 q.pop() 한 개수가 맞지 않는 것 같습니다.

예를 들어, upper_clean의 41번째 라인 (q.push)을 보면, for 문을 1부터 C-1 까지 돌고 있습니다.

void upper_clean(int y,int x){
queue q;
for (int i = 1; i < C; i++) {//왼쪽 방향끝까지
q.push(room[y][i]);
}

그러나 56 라인 (q.pop) 의 for 문을 보면 2부터 C-1 까지 돌고 있습니다.

while (!q.empty()) {
for (int i = 2; i < C; i++) {
room[y][i] = q.front();
q.pop();
}

while (!q.empty()) 라는 조건 때문에 위의 개수가 맞지 않아, while 문을 한 번 더 돌기 때문에 q.pop 을 다시 처음부터 진행하느라 결국 q.pop 할 개수가 부족해서  segmentation fault 가 나는 것으로 보입니다.

joo1223   2년 전

반복문 범위 문제가 맞았네요!! 해결했습니다 감사합니다 ㅠ

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