|
이런 경우가 되겠죠.
1. malloc으로 동적 메모리 할당
2. 조건문 비교 후 실패(false)면 리턴
위의 경우에 false라고 리턴하기 전에 1번에서 할당한 메모리를 해제해야겠죠.
문제는 2번과 같은 조건문이 수십개가 되면...
모든 리턴문 앞에 메모리 해제 루틴을 넣어야 합니다.
엄청 비효율적이고 코드도 지저분해보이죠.
그래서 try {} catch() {} 구문을 쓰는거죠.
문제는 이 구문을 쓰면 디버거에서 익셉션으로 처리해서 브레이크가 걸리는데요.
이건 옵션에 보시면...
Language Exceptions에 Exception Type to ignore 부분에 무시하고 싶은 Exception 타입을 적어주면 됩니다.
그냥 귀찮으면 맨 아래에 있는 Notify on language exceptions 부분의 체크를 꺼버리시면 모든 익셉션이 보고를 하지 않게 됩니다. ㅡㅡ;
이영섭 님이 쓰신 글 :
: 잘 이해가 안되서 다시 질문드릴께요;;
: 아제나님께서 하신 말씀은 어떤 함수가 주어진 임무를 수행하고 아래 남겨진 코드를 두고 Return하려고 하는데, 만약 Return 하게 되면 Return값을 제외한 모든 지역 변수가 초기화되버리고, 어떤 경우에는 Return값마저 초기화되버리니 메모리해제 직전까지 가라고 하신게 맞나요? (goto문이니 엔간하면 쓰지말라고 하신 것 같지만..)
:
: 아..그리고 Debugger Options에서 어떤걸 체크해야하는지 모르겠어요;
:
:
: 아제나 님이 쓰신 글 :
: : 메시지 내용을 보면 소켓을 정상적으로 Close 한 경우인데요.... 오류라고 보기는 힘들고 User Exception이라고 봐야 합니다.
: : 가끔 코딩할 때 어떤 상황이 되면 아래 코드들을 무시하고 빠져나가고 싶은데, return으로 할 경우에 메모리 해제 반환등이 제대로 이루어지지 않을 경우에 마지막에 메모리 해제하기 직전으로 goto문을 쓰면 편할 것 같은데, goto문이 꺼림찍하죠 -_-
: : 그래서 try {} catch(...) {} 구문으로 코딩하기도 하는데, 이런 구문도 디버거에서 예외로 보고하지요.
: : 이걸 끄는 옵션이 Tools -> Options -> Debugger Options 에 있습니다.
: :
: : 이영섭 님이 쓰신 글 :
: : : FTP에서 파일을 다운 받는 과정에서 디버그 모드로 하면 에러가 뜨는데, 생성된 exe파일로 실행하면 에러가 안뜨고 정상적으로 작동해요.
: : :
: : : Project Test.exe raised exception class EldConnCLosed Gracefully with message 'Connection Closed Gracefully' 라는 메시지가 떠요.
: : :
: : : 이런 경우 보신적 있으신분이나 혹시 해결책 갖고 계시면 좀 알려주세요. 디버그에서 안되면 실행에서도 안되야하는게 정상이라고 생각했는데 그게 아닌가봐요.ㅠ.ㅠ
|