내가 C++에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve C++ 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다.  - 최익필

new 나 delete 를 바꾸는것이 아니라 operator new 와 operator delete 를 오버로딩 하여 바꾸는 것이다. 그리고 이 오버로딩으로 재정의 되면, 사용자가 일일이 다 지정해 주어야 하는 관례들이 있다. 이 관례를 따라서 구현을 할 때 조금이라도 실수를 한다면, ... 악영향을 많이 미치기 때문에, 굳이 변경 할 여력이 되지 않는다면 변경하지 않는게 더 좋다고 말한다.

기본적으로 컴파일러가 재공하는 operator new 와 operator delete 는 대체로 쓸만하기 때문이라고 한다.

그렇다면, 언제 바꾸어야 하는지 알아 보도록 하자.
1. 잘못된 힙 사용을 탐지하기 위해서
2. 동적 할당 메모리의 실제 사용에 관한 통계 정보를 수집하기 위해서
3. 할당 및 해제 속력을 높이기 위해서

4. 기본 메모리 관리자의 공간 오버헤드를 줄이기 위해서
5. 적당히 타협한 기본 할당자의 바이트 정렬 동작을 보정하기 위해서.(바이트 정렬의 이점)
6. 임의의 관계를 맺고 있는 객체들을 한 군대에 나란히 모아 놓기 위해서. (page fault)

7. 그때그때 원하는 동작을 수행하도록 하기 위해(.. 1~ 6 외의 다른 동작을 원할 때)


이것만은 잊지 말자.
1. 컴파일러가 제공하는 operator new 와 operator delete 에 대해서 알아 두자.
2. 언제 사용 하는지 알아 두자.

관련링크
http://www.ibm.com/developerworks/kr/library/tutorial/au-memorymanager/section6.html
신고
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요