[ Effective C++ ] 항목 16 : new 및 delete를 사용할 때는 형태를 반드시 맞추자

Minsu._.Lighting·2023년 11월 22일
0
post-thumbnail

[ Effective C++ ] 정리 모음집
" C++ 프로그래머의 필독서, 스콧 마이어스의 Effective C++ 를 읽고 내용 요약 / 정리 "

[핵심]

" new에 []를 썼다면 delete에도 []를, 그냥 new 라면 delete도 그냥.. "

  • new와 delete 표현식은 동일해야 한다!
  • 배열을 typedef 타입으로 만들지 말자!

💡 단일 객체, 객체의 배열은 메모리 배치구조가 다르다!

  • 배열을 위해 만들어지는 힙 메모리에는 대개 배열 원소의 개수가 들어 감.
    - delete 연산자는 소멸자가 몇번 호출될지 알기 쉬움

📌 단일 객체에 delete[ ] . . . ?

  • delete 연산자는 객체의 메모리 앞 부분 몇 바이트를 읽고 그것이 배열의 개수라고 판단, 개수 만큼 소멸자를 부르게 된다.
    - 객체의 메모리를 넘어가 문제가 발생!

📌 객체의 배열에 delete . . . ?

  • 소멸자의 호출 회수가 적어 다 지우지 못함.
    - 소멸자가 없는 기본 제공 타입(int 등)도 미정의 동작이 일어 남

📌 typedef 에서의 주의점!

typedef string AddressLines[4];

string *pal = new AddressLines;

delete pal;			// 무슨 일이 생길지 모름...!
delete [] pal;		// 정상 작동!
  • 웬만하면 배열 타입을 typedef 타입으로는 만들지 말자!
profile
오코완~😤😤

0개의 댓글

관련 채용 정보