자바와 같이 가비지 컬렉션을 기본적으로 제공하는 언어들과 달리
C++의 수동 메모리 관리는 구닥다리로 보일 수 있지만…
시스템 응용프로그램을 만드는 수많은 개발자들은
자신들이 만들 소프트웨어 메모리 사용 성향을 연구하고
이에 맞추어 메모리 할당, 해제 루틴을 다듬으며 수행 성능을 제공하려고 사용하고 있다
이를 위해서는 기본적인 C++ 메모리 관리 루틴 동작을 면밀히 파악할 필요가 있다
어떻게 동작하는지를 아는 것이 이번 장의 초점이다
메모리 할당 및 해제 루틴(operator new, operator delete)
멀티스레드 환경에서 메모리 관리는 단일 스레드 시스템에서 경험할 수 없는 일이 많다
힙은 수정 가능한 전역 자원으로 다중스레드 시스템에서는 스레드들이 전역 자원에 미친듯이 접근하면서 많은 문제가 발생하게 되는데
수정 가능한 정적 데이터에 적절한 동기화를 걸지 않으면
어떤 세심한 설계를 하던지 간에 스레드 잠금에 영향을 받지 않게 된다
operator new 및 operator delete는 객체 한 개를 할당할 때만 적용되는 함수로
배열의 경우는 operator new[], operator delete[]를 사용해야 한다
STL 컨테이너에 대한 힙 메모리는 해당 컨테이너 할당자 객체의 소관으로
new, delete가 개입하지 않는다
항목 49: new 처리자의 동작 원리를 제대로 이해하자
항목 50: new 및 delete를 언제 바꿔야 좋은 소리를 들을지를 파악해 두자
항목 51: new 및 delete를 작성할 때 따라야 할 기존의 관례를 잘 알아 두자
항목 52: 위치 지정 new를 작성한다면 위치 지정 delete도 같이 준비하자