안녕하세요, 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년 전
seg fault가 뜨는데... 배열 메모리 관련 에러라고 알고 있는데요 어디서 오류가 난건가요 ? ㅠㅠ