C++ · MEMORY
new/delete 생명주기와 실패 패턴
수동 메모리 관리는 할당, 소유, 해제 시점이 코드에 흩어지기 쉬워 누수와 댕글링 포인터가 생길 수 있습니다.
핵심 구조
manual lifetime
new
heap 객체 생성과 주소 반환
owner pointer
누가 delete할지 불명확해질 수 있음
delete
객체 수명 종료와 메모리 반환
dangling
남은 포인터가 해제된 주소를 가리킴
new
→
owner pointer
→
delete
→
dangling
판단 기준
check
leak
delete 경로가 빠지면 프로세스가 메모리를 계속 붙잡습니다.
double delete
같은 주소를 두 번 해제하면 힙 상태가 망가질 수 있습니다.
use after free
해제된 객체에 접근하면 재현 어려운 오류가 납니다.
RAII 전환
unique_ptr, vector, string으로 수명을 객체에 묶습니다.