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';
}