포인터가 아니라 힙 블록의 수명이 주인공입니다. 포인터는 그 블록을 가리키는 수단입니다.
int* p = nullptr;
아직 가리킬 대상이 없음을 표시합니다.
p = new int;
힙 블록을 만들고 주소를 받습니다.
*p = 100;
포인터를 통해 값을 읽거나 씁니다.
delete p; p = nullptr;
수명을 끝내고 남은 주소를 지웁니다.
누가 delete할지 코드에서 한눈에 보이면 관리가 가능합니다.
여러 포인터가 같은 블록을 가리키면 누수, 이중 해제, 사용 후 해제가 쉬워집니다.