new_bad_alloc

new_bad_alloc (std::bad_alloc)

<new> 헤더에 정의되어 있어요. 할당 함수들이 저장 공간 할당 실패를 보고할 때 예외로 던지는 객체의 타입이에요.

출처: cppreference

본문

class bad_alloc;

std::bad_alloc은 할당 함수들이 저장 공간 할당 실패를 보고할 때 예외로 던지는 객체의 타입이에요. 상속 관계로 std::exception 계통에서 파생돼요.

멤버 함수

  • (생성자): 새 bad_alloc 객체 생성 (공개 멤버 함수)
  • operator=: bad_alloc 객체 대체 (공개 멤버 함수)
  • what: 설명 문자열 반환 (공개 멤버 함수)

std::bad_alloc::bad_alloc

bad_alloc() throw();                      // (1) until C++11
bad_alloc() noexcept;                     // (1) since C++11
bad_alloc( const bad_alloc& other ) throw();    // (2) until C++11
bad_alloc( const bad_alloc& other ) noexcept;   // (2) since C++11

what()로 접근할 수 있는 구현 정의 널 종료 바이트 문자열을 가진 새 bad_alloc 객체를 구성해요.

    1. 기본 생성자.
    1. 복사 생성자.

new가 메모리 할당에 실패하면(operator new가 널을 반환하도록 설정된 nothrow 버전이 아니면) std::bad_alloc을 던져요.

try {
    int* p = new int[1'000'000'000];   // 할당 실패 시 bad_alloc
} catch (const std::bad_alloc& e) {
    std::cerr << "할당 실패: " << e.what() << '\n';
}

더 알아보기 (Learn more)

cppreference