728x90

Pointer에는 '값이 NULL일 때에는 아무것도 하지 않는다'는 규칙이 있다. 메모리 배열에서 0번만은 사용하면 안된다고 정해져 있는 것이다.

 

int* p = NULL;

*p = 4;      // 쓰기 오류.

int a = *p;  // 읽기 오류.

 

따라서 앞에서와 같은 코드는 규칙을 위반했기 때문에 프로그램이 멈추게 된다. delete한 포인터에 NULL을 넣는 이유는 이런 성질을 디버그에 활용하려는 것이다. delete해도 포인터에는 값이 남아 있는데 그 값을 이용하면 메모리에 접근 할 수 있다. 이것을 방지하기 위해 delete를 한 이후에는 NULL을 넣는 버릇을 들이도록 하자.

728x90

+ Recent posts