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

조회수 1457회

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

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

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    함수의 메모리 해제

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

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

    중첩된 반복문 빠져나가기

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

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

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

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.