new_bad_array_new_length

new_bad_array_new_length (std::bad_array_new_length)

<new> 헤더에 정의되어 있어요. new-표현식들이 잘못된 배열 길이를 보고할 때 예외로 던지는 객체의 타입이에요. C++11부터 도입됐어요.

출처: cppreference

본문

class bad_array_new_length;

(C++11부터)

std::bad_array_new_length는 new-표현식이 다음 경우에 잘못된 배열 길이를 보고하며 예외로 던지는 객체의 타입이에요.

  • 배열 길이가 음수일 때,
  • 새 배열의 총 크기가 구현 정의 최대값을 초과할 때,
  • 초기화자 절의 수가 초기화할 요소 수를 초과할 때.

첫 번째 배열 차원만 이 예외를 발생시킬 수 있어요. 첫 번째 차원 외의 차원은 상수 표현식이라 컴파일 타임에 검사돼요. 상속 관계로 예외 계통에서 파생돼요.

멤버 함수

  • (생성자): 새 bad_array_new_length 객체 생성 (공개 멤버 함수)
  • operator=: bad_array_new_length 객체 대체 (공개 멤버 함수)
  • what: 설명 문자열 반환 (공개 멤버 함수)
try {
    int* p = new int[-1];   // 음수 길이 → bad_array_new_length
    (void)p;
} catch (const std::bad_array_new_length& e) {
    std::cerr << e.what() << '\n';
}

더 알아보기 (Learn more)

cppreference