일지

Effective C++...47

niamdank 2022. 8. 26. 07:23

new 처리자의 동작 원리를 제대로 이해하자

예외 발생 시 호출되는 함수

 C++에는 예외 발생 시 사용자의 함수를 호출해주는 예외 지정이라는 기능이 존재한다.


void outOfMem()

{

    std::cerr << "Unable to satisfy request for memory\n";

    std::abort();

}

int main()

{

    std::set_new_handler(outOfMem);

}


 

이러한 함수를 구현할 때는 다음 중 하나의 동작이 반드시 이뤄져야 한다.

  • 사용할 수 있는 메모리를 더 많이 확보한다.
  • 다른 new 처리자를 설치한다.
  • new 처리자의 설치를 제거한다.
  • 예외를 던진다.
  • 복귀하지 않고 프로그램을 종료한다.