이중 해제

이중 해제

설명

같은 메모리 영역을 두 번 해제하면 할당자 상태가 손상될 수 있습니다.

잠재적 영향

  • 크래시, use-after-free, 임의 코드 실행으로 이어질 수 있습니다.

해결 방법

소유권을 단일 경로로 관리하고 해제 후 포인터를 무효화하거나 RAII를 사용합니다.

예시

변경 전

c
char *p = malloc(16);
free(p);
free(p);

변경 후

c
char *p = malloc(16);
free(p);
p = NULL;

설명:

  • 변경 전: 동일 포인터를 연속해서 두 번 해제합니다.
  • 변경 후: 해제 후 포인터를 다시 해제하지 않도록 무효화합니다.

참조