manual allocation checklist

수동 동적 할당 코드는 성공 경로보다 실패 경로를 먼저 점검한다

할당이 성공한 경우뿐 아니라 예외, 조기 반환, 배열 해제, 포인터 정리까지 함께 봐야 합니다.

1. 시작은 nullptr

초기 포인터가 쓰레기 주소를 들고 있지 않게 합니다.

2. 할당과 해제 짝

new/delete, new[]/delete[]가 일치하는지 확인합니다.

3. 모든 경로에서 해제

중간에 return이나 예외가 나도 해제 경로가 남아 있는지 봅니다.

4. 해제 뒤 nullptr

댕글링 포인터를 빨리 드러내도록 남은 포인터를 비웁니다.

5. 소유권 중복 금지

같은 블록을 두 곳에서 해제하려는 구조를 피합니다.

6. RAII 우선

가능하면 컨테이너나 스마트 포인터가 수명을 관리하게 합니다.

수동 관리가 필요한 경우

저수준 API, 레거시 코드, 특수한 성능 제약처럼 책임을 명확히 문서화할 수 있어야 합니다.

대부분의 현대 C++

std::vector, std::unique_ptr, std::string이 안전한 기본 선택입니다.

A급 규칙: 할당을 보여주는 다이어그램은 반드시 해제와 실패 경로까지 함께 보여줘야 합니다.