반복문/함수에서 goto의 장점은 뭔가요?
조회수 2625회
학교에서 goto는 절대 어떤 경우에도 쓰지 말라고 배웠는데 libavcodec을 보니 의외로 아직도 goto를 쓰는 사람이 많더군요
반복문/함수에서 goto의 장점이 뭐길래 쓰지 말라는데 자꾸 쓰는건가요?
1 답변
-
함수의 메모리 해제
동적 할당이 있는 함수에서는 함수를 나갈 때 바로 종료하지 않고 할당된 부분을
free
해줘야 합니다.보통 맨 뒤에서
free
해주는 경우가 많기 때문에 여기에 라벨을 붙여goto
문을 쓰면 메모리 해제하는 부분을 일괄적으로 처리할 수 있습니다중첩된 반복문 빠져나가기
또
goto
가 유용하게 쓰이는 경우는, 중첩된 반복문에서 맨 안쪽 반복문에서 조건이 안 맞으면 모든 반복문을 중단하는 코드가 필요할 때입니다.goto
를 쓰지 않는다고 하면 flag를 세워서 각 조건문마다 flag를 확인하는 코드를 만들어 줘야 합니다.goto
를 쓰면 한 번에 해결할 수 있어서 코드 길이가 훨씬 더 많이 줄고 이해하기 쉬워지지요이 외에도 여러 가지 장점이 있지만 더 적지는 못할 것 같네요. 그리고 보통 goto는 쓰지 않는 게 좋다고 하지만
break
나exit
,continue
는 뜯어보면 전부goto
를 포함하고 있기 때문에 우리는 이미 다른 형태로goto
를 쓰고 있다고 봐야 합니다.
댓글 입력