힙 메모리는 할당, 사용, 해제, 포인터 정리를 한 흐름으로 본다
포인터가 아니라 힙 블록의 수명이 주인공입니다. 포인터는 그 블록을 가리키는 수단입니다.
01초기화
int* p = nullptr;
아직 가리킬 대상이 없음을 표시합니다.
02할당
p = new int;
힙 블록을 만들고 주소를 받습니다.
03사용
*p = 100;
포인터를 통해 값을 읽거나 씁니다.
04해제 후 정리
delete p; p = nullptr;
수명을 끝내고 남은 주소를 지웁니다.
소유자가 분명할 때
누가 delete할지 코드에서 한눈에 보이면 관리가 가능합니다.
소유자가 흐릴 때
여러 포인터가 같은 블록을 가리키면 누수, 이중 해제, 사용 후 해제가 쉬워집니다.
수동 수명 관리는 “주소를 얻었다”가 아니라 “누가 언제 해제하는가”까지 포함합니다.