반응형
우선 가장 정답에 대해서 말하자면 포인터를 선언할때는
1. 변수 선언시 NULL로 초기화 해줘야 한다.
2. new 로 생성한 객체를 delete 한 뒤에는 NULL로 다시 초기화 해준다.
위와 같은 사실 이전에 한가지 의문이 있는데
delete는 NULL pointer에 대해 safe 한가?
MEC++ (More Effective C++)에는 C++ 에서는 safe to null pointer 라고 명시되어 있다.
즉 NULL 포인터를 delete를 해도 null pointer exception error가 발생하지 않는다는 것.
즉 이러한 코드는 필요가 없는 것이다.
if(var) delete var;
일단 테스트 해본 결과 메모리 릭이 발생하는 것은 아니지만 일반적으로 매크로를 사용해서 NULL로 다시 초기화 해준다.
(디버깅이 문제가 될 수 있어 template나 공용함수를 사용해도 무방)
#define SAFE_DELETE(var) { delete var; var = NULL; }
반응형
'Coding Tip > C/C++' 카테고리의 다른 글
C/C++ Socket에서 비동기 connect 처리하기 (0) | 2014.05.16 |
---|---|
WSAGetLastError 함수 에러코드 종류 (0) | 2014.05.15 |
[C/C++] 파일 입출력 함수들 모음 (0) | 2013.02.14 |
wait(), waitpid() 옵션 별 사용 설명 (0) | 2012.09.03 |
[C / C++] PATH로 디렉토리 생성 (1) | 2011.10.24 |