Leak Report Reading

누수 보고서 해석 기준

Valgrind나 LSan 출력은 누수된 바이트 수만 보는 것이 아니라, 포인터를 잃었는지와 아직 접근 경로가 남아 있는지를 구분해야 한다.

P1

Definitely lost

할당 블록을 가리키는 포인터가 사라져 해제할 방법이 없는 상태다. 할당 스택을 따라 소유권 누락을 바로 수정한다.

delete 누락 · 포인터 덮어쓰기
P2

Possibly lost

내부 포인터나 별도 저장 위치 때문에 원래 블록 시작 주소를 확정하기 어렵다. 소유자 객체와 포인터 산술을 함께 본다.

숨은 소유권 · 주소 이동
P3

Still reachable

종료 시점에 접근 경로는 남아 있다. 전역 캐시, 싱글턴, 의도된 생명 주기인지 확인하고 정책에 맞게 정리한다.

전역 상태 · 종료 정리

할당 위치

스택 트레이스에서 new, malloc, 컨테이너 확장 지점을 찾는다.

블록 규모

바이트 수와 블록 수를 함께 보고 반복 누수인지 큰 객체 누수인지 나눈다.

수명 경로

예외, 조기 반환, 포인터 재할당 때문에 해제 코드가 건너뛰는지 확인한다.

수정 방향

RAII, unique_ptr, 컨테이너 소유로 해제 책임을 객체에 묶는다.