보통 HANDLE을 CloseHandle을 이용해서 닫고 해당 HANDLE에 NULL을 넣는다. 

배울때 습관적으로 넣었는데, 왜 넣어야하는지 그 이유를 알고 싶어졌다.

 

✅ 이중 해제 방지

핸들을 NULL로 만들어 두면 이후 코드에서 if문으로 유효한지 확인하고 다시 닫는 실수를 방지할 수 있다.

 

✅ 사용 후 참조 방지

닫힌 핸들을 NULL로 바꿔두면 잘못된 참조나 오용을 방지할 수 있다.

그렇지 않으면 나중에 그 핸들을 유효한 것처럼 잘못 사용하여 예외나 오류가 발생할 수 있다.

 

✅ 디버깅 시 추적이 쉬움

디버깅 중 핸들이 NULL이면 해당 핸들이 '해제된 상태'라는 것을 쉽게 파악할 수 있다.

 

c++11 이상이라면 nullptr이 더 의미상 명확하고 권장된다.

하지만 HANDLE은 전통적인 C 스타일 핸들이므로, NULL도 문제 없이 동작한다.

다만 resource를 닫고 나서 '이 핸들은 무효하다'는 의도를 표현할 때는 nullptr이 의미적으로는 더 정확하다.

+ Recent posts