new/delete pair

단일 객체와 배열은 해제 연산자의 짝이 다르다

할당한 모양을 기억해야 안전하게 해제할 수 있습니다. 배열에는 반드시 대괄호가 필요합니다.

단일 객체

할당int* p = new int;
해제delete p;
틀림delete[] p;
문제배열로 만든 블록이 아닙니다.

배열

할당int* a = new int[n];
해제delete[] a;
틀림delete a;
문제배열 요소 해제가 올바르게 수행되지 않을 수 있습니다.
1. 해제

사용이 끝난 지점에서 짝에 맞게 해제합니다.

2. 무효화

남은 포인터를 nullptr로 바꿉니다.

3. 재사용 금지

해제된 주소는 다시 역참조하지 않습니다.

해제 연산자는 “포인터 타입”보다 “어떤 new로 만들었는가”에 맞춰 선택합니다.