반복문/함수에서 goto의 장점은 뭔가요?


학교에서 goto는 절대 어떤 경우에도 쓰지 말라고 배웠는데 libavcodec을 보니 의외로 아직도 goto를 쓰는 사람이 많더군요

반복문/함수에서 goto의 장점이 뭐길래 쓰지 말라는데 자꾸 쓰는건가요?

  • 2016년 01월 29일에 작성됨

조회수 235


1 답변


좋아요
0
싫어요
채택취소하기

함수의 메모리 해제

동적 할당이 있는 함수에서는 함수를 나갈 때 바로 종료하지 않고 할당된 부분을 free 해줘야 합니다.

보통 맨 뒤에서 free 해주는 경우가 많기 때문에 여기에 라벨을 붙여 goto문을 쓰면 메모리 해제하는 부분을 일괄적으로 처리할 수 있습니다

중첩된 반복문 빠져나가기

goto가 유용하게 쓰이는 경우는, 중첩된 반복문에서 맨 안쪽 반복문에서 조건이 안 맞으면 모든 반복문을 중단하는 코드가 필요할 때입니다.

goto를 쓰지 않는다고 하면 flag를 세워서 각 조건문마다 flag를 확인하는 코드를 만들어 줘야 합니다. goto를 쓰면 한 번에 해결할 수 있어서 코드 길이가 훨씬 더 많이 줄고 이해하기 쉬워지지요

이 외에도 여러 가지 장점이 있지만 더 적지는 못할 것 같네요. 그리고 보통 goto는 쓰지 않는 게 좋다고 하지만 breakexit, continue는 뜯어보면 전부 goto를 포함하고 있기 때문에 우리는 이미 다른 형태로 goto를 쓰고 있다고 봐야 합니다.

  • 2016년 01월 29일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close