manual lifetime

힙 메모리는 할당, 사용, 해제, 포인터 정리를 한 흐름으로 본다

포인터가 아니라 힙 블록의 수명이 주인공입니다. 포인터는 그 블록을 가리키는 수단입니다.

01초기화

int* p = nullptr;
아직 가리킬 대상이 없음을 표시합니다.

02할당

p = new int;
힙 블록을 만들고 주소를 받습니다.

03사용

*p = 100;
포인터를 통해 값을 읽거나 씁니다.

04해제 후 정리

delete p; p = nullptr;
수명을 끝내고 남은 주소를 지웁니다.

소유자가 분명할 때

누가 delete할지 코드에서 한눈에 보이면 관리가 가능합니다.

소유자가 흐릴 때

여러 포인터가 같은 블록을 가리키면 누수, 이중 해제, 사용 후 해제가 쉬워집니다.

수동 수명 관리는 “주소를 얻었다”가 아니라 “누가 언제 해제하는가”까지 포함합니다.