카테고리 없음

[Effective C++] Item16_new 및 delete를 사용할 때는 형태를 반드시 맞추자

해달 2018. 1. 31. 22:44

Item16_new 및 delete를 사용할 때는 형태를 반드시 맞추자

챕터 핵심 내용

  • new 표현식에 []를 썼으면, 대응되는 delete 표현식에도 []를 써야 한다. 마찬가지로 []를 쓰지 않았다면, delete에도 []를 쓰지 말아야 한다.

- new 표현식에 []를 썼으면, 대응되는 delete 표현식에도 []를 써야 한다. 마찬가지로 []를 쓰지 않았다면, delete에도 []를 쓰지 말아야 한다.

  • 짝이 맞지 않는다면 미정의 동작을 일으킨다.
  • new의 작동 원리
  1. 메모리 할당
  2. 할당된 메모리에 대해 한 개 이상의 생성자 호출
  • delete의 작동 원리
  1. 할당된 메모리에 대해 한 개 이상의 소멸자 호출
  2. 메모리 해제
  • 힙에 만들어지는 단일 객체 메모리 레이아웃과 객체 배열의 메모리 레이아웃은 다르다.
  • 객체 배열의 메모리에는 배열원소의 갯수가 들어간다. 이 때문에 delete는 소멸자가 몇 번 호출될지를 쉽게 알 수 있다.
  • 실수의 여지를 줄 수 있는 '배열의 별칭선언(typedef)'은 하지 않는 것이 좋다.