new_new_handler

new_new_handler (std::new_handler)

<new> 헤더에 정의되어 있어요. std::set_new_handlerstd::get_new_handler 함수에서 사용하는 함수 포인터 타입이에요. 인자를 받지 않고 void를 반환하는 함수에 대한 포인터예요.

출처: cppreference

본문

typedef void (*new_handler)();

std::new_handler는 인자를 받지 않고 void를 반환하는 함수에 대한 포인터 타입이에요. std::set_new_handlerstd::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 타입 전달

더 알아보기 (Learn more)

cppreference