함수내에서 에러발생 후 리턴처리
글쓴이: atomaths / 작성시간: 수, 2009/02/04 - 1:47오후
int my_func() { <span>①동적 메모리 할당;</span> 어떤 일 수행...; if (에러발생) { ①메모리 free; return -1; } <span>②DB 접속 등 추가적인 메모리 할당;</span> if (또다른 에러발생) { ①메모리 free; ②메모리 free return -2; } ①② 메모리 모두 free; return 0; }
보통 위와 같은 경우에서 각각의 에러에 따른 메모리 해제를 어떤식으로 하는 것이 좋을까요?
대체적으로 많이 사용하시는 방법을 알고 싶습니다.
저런 방식이 아니라면 goto를 통한 처리를 해도 소스는 깔끔할 것 같은데, 왠지 goto는 좀 꺼려지네요.
아니면 무서운 setjmp, longjmp를 사용해야 하는 것인지...
어떻게들 처리하시는지 궁금합니다.
Forums:
C++이면 shared_ptr
C++이면 shared_ptr 같은거 쓰면 좋을테구
C언어인경우 저는 아래와 비슷한 소스를 썼습니다.
요즘 컴파일러들은 함수마다 라벨을 따로 따로 인식하는 것 같습니다.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
원래 goto가 함수 통용
원래 goto가 함수 통용 범위인지라 그렇게 사용할 수 있습니다.
이전의 베이직류와는 다릅니다;;
goto라고 해서 피할 필요는 없다고 봅니다.
댓글 달기