2009. 7. 10. 03:14

delete 널 포인터

습관적으로 소멸자에서 NULL 체크후에 delete 하곤 했다.

~SimpleString() {

        if(pchTemp != NULL) delete pchTemp;

}


delete 널 포인터가 구문상 가능한 것이기에 아래 예처럼 깔끔하게 작성할 수 있다.

class SimpleString {

private:

        char * m_pchTemp;

public:

        SimpleString() : m_pchTemp(NULL) {

 

        }

        ~SimpleString() {

               // 습관적으로...

               // if(pchTemp != NULL) delete pchTemp;

 

               delete m_pchTemp;

        }

};


위에서 pchTemp 는 항상 NULL로 초기화 되기때문에 delete m_pchTemp 는  reasonable 하다.

참고 : More Effective C++