해제 후 사용

해제 후 사용

설명

해제된 메모리를 다시 읽거나 쓰면 이미 다른 용도로 재사용된 메모리에 접근할 수 있습니다.

잠재적 영향

  • 정보 노출, 메모리 손상, 코드 실행 가능성이 있습니다.

해결 방법

해제 후에는 포인터를 사용하지 말고 소유권 모델을 명확히 하며 C++에서는 RAII 스마트 포인터를 사용합니다.

예시

변경 전

c
char *p = malloc(16);
free(p);
p[0] = 'x';

변경 후

c
char *p = malloc(16);
if (p == NULL) { return; }
p[0] = 'x';
free(p);

설명:

  • 변경 전: 해제 이후 포인터를 다시 씁니다.
  • 변경 후: 메모리를 사용하는 작업을 해제 전에 완료합니다.

참조