new_new_handler
new_new_handler (std::new_handler)
<new> 헤더에 정의되어 있어요. std::set_new_handler와 std::get_new_handler 함수에서 사용하는 함수 포인터 타입이에요. 인자를 받지 않고 void를 반환하는 함수에 대한 포인터예요.
출처: cppreference
본문
typedef void (*new_handler)();
std::new_handler는 인자를 받지 않고 void를 반환하는 함수에 대한 포인터 타입이에요. std::set_new_handler와 std::get_new_handler 함수가 이 타입을 사용해요.
new-handler는 operator new가 메모리를 할당하지 못했을 때 호출되는 함수예요. new-handler는 다음 중 하나를 해야 해요.
- 더 많은 메모리를 사용 가능하게 만든다.
- 다른 new-handler를 설치한다.
- new-handler를 제거한다(널 포인터 설정).
- 예외를 던진다(
std::bad_alloc등). - 프로그램을 종료한다.
void my_handler() { std::cerr << "할당 실패!\n"; std::abort(); }
std::set_new_handler(my_handler); // new_handler 타입 전달