Item16_new 및 delete를 사용할 때는 형태를 반드시 맞추자
챕터 핵심 내용
- new 표현식에 []를 썼으면, 대응되는 delete 표현식에도 []를 써야 한다. 마찬가지로 []를 쓰지 않았다면, delete에도 []를 쓰지 말아야 한다.
- new 표현식에 []를 썼으면, 대응되는 delete 표현식에도 []를 써야 한다. 마찬가지로 []를 쓰지 않았다면, delete에도 []를 쓰지 말아야 한다.
- 짝이 맞지 않는다면 미정의 동작을 일으킨다.
new
의 작동 원리
- 메모리 할당
- 할당된 메모리에 대해 한 개 이상의 생성자 호출
delete
의 작동 원리
- 할당된 메모리에 대해 한 개 이상의 소멸자 호출
- 메모리 해제
- 힙에 만들어지는 단일 객체 메모리 레이아웃과 객체 배열의 메모리 레이아웃은 다르다.
- 객체 배열의 메모리에는 배열원소의 갯수가 들어간다. 이 때문에
delete
는 소멸자가 몇 번 호출될지를 쉽게 알 수 있다.- 실수의 여지를 줄 수 있는 '배열의 별칭선언(typedef)'은 하지 않는 것이 좋다.