항목16 - New 및 Delete를 사용할 때는 형태를 반드시 맞추자!
New를 사용하면 이뤄지는 기본적인 내부동작
- 일단 메모리가 할당된다.
- 할당된 메모리에 대한 1개 이상의 생성자가 호출된다.
Delete를 사용하면 이뤄지는 기본적인 내부동작
- 우선 기존 할당된 메모리에 대한 1개 이상의 소멸자가 호출된다.
- 그 후 메모리가 해체된다.
std::string *stringPtr1 = new std::string;
std::string *stringPtr2 = new std::string[100];
delete stringPtr1; // 객체 한 개를 삭제합니다.
delete [] stringPtr2; // 객체의 배열을 삭제합니다.
위 코드처럼 new 표현식에 맞춰 delete 표현식을 맞춰주자가 핵심 내용이다.
new에 [ ] 를 썼다면 여기에 대응되는 delete[ ] 를 써주고 아니라면 delete를 쓰자.
잊지말자!
- new 표현식에 [ ]를 썼으면, 대응되는 delete 표현식에도 [ ]를 써야합니다.
- new 표현식에 [ ]를 안썼으면, 대응되는 delete 표현식에도 [ ]를 쓰지 말아야합니다.