[ Effective C++ ] 정리 모음집
" C++ 프로그래머의 필독서, 스콧 마이어스의 Effective C++ 를 읽고 내용 요약 / 정리 "
" 제목이 곧 핵심! "
- 개발자가 스스로 사용자 정의 new 및 delete를 작성하는 데는 수행 성능을 향상시키려는 목적, 힙 사용 시의 에러를 디버깅하려는 목적, 힙 사용 정보를 수집하려는 목적 등, 여러 가지 나름대로 타당한 이유가 있다!
- new한 메모리에 delete를 하는 것을 잊어버려 메모리가 누출 되거나 또는 한 번의 new에 여러번의 delete를 하는 실수를 줄일 수 있다
- 데이터 오버런, 언더런 등을 방지할 수 있다
- 할당된 메모리 블록의 크기는 어떤 분포를 보이는지?
- 할당된 메모리 블록 각각의 사용 기간은 또 어떤 분포를 보이는지?
- 메모리가 할당되고 해제되는 순서가 FIFO(선입선출)인지, LIFO(후입선출)인지, 아니면 랜덤인지?
- 시간 경과에 따라 사용 패턴이 바뀌는지?
- 한 번에 실제로 쓰이는 동적 할당 메모리의 최대량은 어떤지?
- 기본으로 제공되는 범용 할당자는 사용자 정의 버전보다 꽤 느린 경우가 많다
- 범용 메모리 관리자는 사용자 정의 버전과 비교해서 속력이 느린 경우도 많은데다가 메모리도 많이 차지하는 사례가 많다
- x86 아키텍쳐에서는 double이 8바이트 단위로 정렬되어 있을 때 읽기 · 쓰기 속도가 가장 빠르다, 기본 제공 new가 double에 대한 동적 할당 시 8바이트 정렬을 보장하지 않는 컴파일러라면 8바이트 정렬을 보장하는 사용자 정의 버전 new를 만들어 사용하면 수행 성능을 끌어올릴 수 있다
- 메모리 군집화는 위치지정 new 및 위치지정 delete를 통해 쉽게 구현할 수 있다
- 기본 제공이 아닌 내가 원하는 동작을 필요로 할 때 사용자 정의를 사용한다