내가 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
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
'책 정리 > Effective C++ 3판' 카테고리의 다른 글
항목 55: Boost! 부스트를 늘 여러분 가까이에 (0) | 2008.08.11 |
---|---|
항목 54: TR1을 포함한 표준 라이브러리 구성요소와 편안한 친구가 되자 (0) | 2008.08.11 |
항목 53: 컴파일러 경고를 지나치지 말자 (0) | 2008.08.11 |
항목 52: 위치지정 new를 작성한다면 위치지정 delete도 같이 준비하자. (0) | 2008.08.09 |
항목 51: new 및 delete를 작성할 때 따라야 할 기존의 관례를 잘 알아 두자. (0) | 2008.08.09 |
항목 49: new 처리자의 동작 원리를 제대로 이해하자. (0) | 2008.08.07 |
항목 48: 템플릿 메타프로그래밍, 하지 않겠는가? (1) | 2008.08.05 |
항목 47: 타입에 대한 정보가 필요하다면 특성정보 클래스를 사용하자. (0) | 2008.08.05 |
항목 46: 타입 변환이 바람직할 경우에는 비멤버 함수를 클래스 템플릿 안에 정의해 두자 (0) | 2008.08.03 |
항목 45: "호환되는 모든 타입"을 받아들이는 데는 멤버 함수 템플릿이 직방! (0) | 2008.07.31 |
최근댓글