6. new 처리자를 구현할 때 지켜야 할 점
operator new는 충분한 메모리를 찾아낼 때까지 new 처리자를
되풀이 해서 호출한다 그래서 new 처리자를 구현할 때 아래 5가지
중 하나를 반드시 포함해서 구현하도록 해야한다
- 사용할 수 있는 메모리를 더 많이 확보한다
- 다른 new 처리자를 설치한다
- new 처리자의 설치를 제거한다
- 예외를 던진다
- 복귀하지 않는다
7. 사용할 수 있는 메모리를 더 많이 확보한다
프로그램이
시작할 때
new 처리자가
사용할 메모리를
미리 할당해 놓는다
16. 클래스 별 new 처리자 구현
믹스인(mixin) 기본 클래스
다른 파생 클래스들이 한 가지 특정 기능만을 물려받을 수 있도록
설계한 기본 클래스
신기하게 반복되는 템플릿 패턴 (CRTP)
curiously recurring template pattern
자신을 템플릿 인자로 사용하여 템플릿 인스턴스화로부터
파생되게 하는 c++ 관용어
정적 다형성으로 구현하고 싶을 때 주로 사용
17. 예외 불가 (nothrow) new
할당 실패시 예외를 던지지 않고 옛날 방식처럼 널을 반환하는
operator new 를 예외 불가 형태 라고 말한다
이전 코드와 호환성을 위해 추가
19. 예외 불가 (nothrow) new
예외불가 new는 그때 호출되는 operator new 에서만 예외가
발생되지 않도록 보장할 뿐, 생성자 등에서 예외가 나오지 않게
막아준다는 얘기가 아니다
20. 이것만은 잊지 말자
- set_new_handler 함수를 쓰면 메모리 할당 요청이 만족되지
못했을 때 호출되는 함수를 지정할 수 있습니다
- 예외불가(nothrow) new는 영향력이 제한되어 있습니다 메모리
할당 자체에만 적용되기 때문입니다 이후에 호출되는
생성자에서는 얼마든지 예외를 던질 수 있습니다