[프로그래밍]

기존 C/C++ 기반의 드라이버 개발에서 발생하는 시스템 충돌

gurupia 2025. 12. 29. 19:25

기존 C/C++ 기반의 드라이버 개발에서 발생하는 시스템 충돌(블루스크린)의 80% 이상은 메모리 관리 실수에서 비롯됩니다,.

소스에서 구체적으로 지목한 3대 주요 메모리 오류는 다음과 같습니다.

1. 널 포인터 역참조 (Null Pointer Dereference)

  • 정의: 메모리 상에 존재하지 않는, 유효하지 않은 주소(Null)에 접근하려고 시도할 때 발생합니다,.
  • 현상: 프로그램이 참조할 주소를 찾지 못해 길을 잃고 비정상적으로 종료됩니다.

2. 해제 후 사용 (Use After Free)

  • 정의: 작업이 끝나 이미 시스템에 반환(해제)된 메모리 공간을 다시 사용하려고 할 때 발생합니다,.
  • 현상: 해당 메모리는 이미 다른 용도로 사용 중일 수 있으므로, 데이터 무결성이 깨지거나 예측 불가능한 시스템 오류를 유발합니다.

3. 버퍼 오버플로 (Buffer Overflow)

  • 정의: 지정된 메모리 공간(버퍼)의 범위를 벗어나서 데이터를 쓰는 오류입니다,.
  • 현상: 넘친 데이터가 인접한 다른 데이터 영역을 침범하거나 훼손하여 시스템 전체를 멈추게 하거나 보안 취약점을 만듭니다,.

이러한 오류들은 C/C++ 언어 특성상 코드를 작성할 때 즉각적으로 발견하기 어렵고, 실제 실행(런타임) 중에 치명적인 오류로 나타나는 특징이 있습니다,.


비유로 이해하기

이 세 가지 메모리 오류를 **'아파트 우편함'**에 비유하여 쉽게 이해할 수 있습니다,.

  • Null Pointer Dereference: 존재하지 않는 **'000동 000호'**로 편지를 배달하려다 집배원이 길을 잃는 상황입니다,.
  • Use After Free: 입주민이 이미 이사 가서 비어있는 우편함에 중요한 서류를 넣고 나중에 찾으려 하는 헛수고입니다,.
  • Buffer Overflow: 작은 우편함에 초대형 소포를 억지로 끼워 넣다가, 옆집 우편함까지 찌그러뜨리고 남의 편지까지 훼손하는 민폐 상황입니다,.