단일 객체와 배열은 해제 연산자의 짝이 다르다
할당한 모양을 기억해야 안전하게 해제할 수 있습니다. 배열에는 반드시 대괄호가 필요합니다.
단일 객체
할당
int* p = new int;해제
delete p;틀림
delete[] p;문제배열로 만든 블록이 아닙니다.
배열
할당
int* a = new int[n];해제
delete[] a;틀림
delete a;문제배열 요소 해제가 올바르게 수행되지 않을 수 있습니다.
1. 해제
사용이 끝난 지점에서 짝에 맞게 해제합니다.
2. 무효화
남은 포인터를 nullptr로 바꿉니다.
3. 재사용 금지
해제된 주소는 다시 역참조하지 않습니다.
해제 연산자는 “포인터 타입”보다 “어떤 new로 만들었는가”에 맞춰 선택합니다.