new가 실패했을때의 처리

데브피아 김용현님의 글

 

보통 프로그래밍을 할때 new에 대한 실패 처리는 해주지 않고 코딩을 합니다.

 

문자열이나 new 를 쓰지 않는 어플리케이션은 없다고 해도 틀린말은 아니고 다음과 같은 코드는 일반적으로 많이 쓰이는 코드 입니다.
char* szName = new char[128];
new 에 대한 에러 처리는 하지 않습니다. 만일, 아주 큰 new 를 많이 해야 할 경우라던지, 특수한 환경의 임베디드라면, 가끔 new 에 대한 방어코딩을 하고 싶을때가 있습니다. 그럴때 대부분 다음과 같은 코드를 작성합니다.
char* szName = new char[128]; 
if(!szName)
    NewFail();

 

그러나 위와 같은 코드는 옳지 않고 동작하지 않습니다. 테스트를 할때에도 new가 할당 실패하는경우는 거의 없으므로 프로그래머는 위와 같은 코드가 동작하지