보통 HANDLE을 CloseHandle을 이용해서 닫고 해당 HANDLE에 NULL을 넣는다.
배울때 습관적으로 넣었는데, 왜 넣어야하는지 그 이유를 알고 싶어졌다.
✅ 이중 해제 방지
핸들을 NULL로 만들어 두면 이후 코드에서 if문으로 유효한지 확인하고 다시 닫는 실수를 방지할 수 있다.
✅ 사용 후 참조 방지
닫힌 핸들을 NULL로 바꿔두면 잘못된 참조나 오용을 방지할 수 있다.
그렇지 않으면 나중에 그 핸들을 유효한 것처럼 잘못 사용하여 예외나 오류가 발생할 수 있다.
✅ 디버깅 시 추적이 쉬움
디버깅 중 핸들이 NULL이면 해당 핸들이 '해제된 상태'라는 것을 쉽게 파악할 수 있다.
c++11 이상이라면 nullptr이 더 의미상 명확하고 권장된다.
하지만 HANDLE은 전통적인 C 스타일 핸들이므로, NULL도 문제 없이 동작한다.
다만 resource를 닫고 나서 '이 핸들은 무효하다'는 의도를 표현할 때는 nullptr이 의미적으로는 더 정확하다.
'언어 > C' 카테고리의 다른 글
[C] 미리 컴파일된 헤더 (0) | 2025.05.29 |
---|---|
[C] 템플릿 함수를 헤더에 정의해야하는 이유 (0) | 2025.05.29 |
[C] 2진수, 16진수 변환 (0) | 2025.04.23 |
[C] 컴퓨터 덧셈 ( 반가산기, 전가산기 ) (0) | 2025.04.23 |
[C] 게이트 회로 (0) | 2025.04.23 |