std:: bad_array_new_length
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Functions | ||||
|
(C++11)
|
||||
| Classes | ||||
|
bad_array_new_length
(C++11)
|
||||
|
(C++17)
|
||||
| Types | ||||
| Objects | ||||
|
(C++20)
|
||||
| Object access | ||||
|
(C++17)
|
|
Определено в заголовке
<new>
|
||
|
class
bad_array_new_length
:
std::
bad_alloc
|
(начиная с C++11) | |
std::bad_array_new_length
— это тип объекта, выбрасываемого в качестве исключения
new-выражениями
для сообщения о недопустимых размерах массива, если
- Длина массива отрицательная,
- Общий размер нового массива превысит определенное в реализации максимальное значение,
- Количество инициализаторов превышает количество инициализируемых элементов.
Только первое измерение массива может вызывать это исключение; остальные измерения, кроме первого, являются константными выражениями и проверяются во время компиляции.
Диаграмма наследования
Содержание |
Функции-члены
|
(constructor)
|
создает новый объект
bad_array_new_length
(public member function) |
|
operator=
|
заменяет объект
bad_array_new_length
(public member function) |
|
what
|
возвращает поясняющую строку
(public member function) |
std::bad_array_new_length:: bad_array_new_length
|
bad_array_new_length
(
)
noexcept
;
|
(1) |
(начиная с C++11)
(constexpr начиная с C++26) |
|
bad_array_new_length
(
const
bad_array_new_length
&
other
)
noexcept
;
|
(2) |
(начиная с C++11)
(constexpr начиная с C++26) |
Создает новый объект
bad_array_new_length
с определенной реализацией нуль-терминированной строкой байтов, доступной через
what()
.
std::bad_array_new_length
, то
std::
strcmp
(
what
(
)
, other.
what
(
)
)
==
0
.
Параметры
| other | - | другой объект исключения для копирования |
std::bad_array_new_length:: operator=
|
bad_array_new_length
&
operator
=
(
const
bad_array_new_length
&
other
)
noexcept
;
|
(начиная с C++11)
(constexpr начиная с C++26) |
|
Присваивает содержимое объекта
other
. Если
*
this
и
other
оба имеют динамический тип
std::bad_array_new_length
, то после присваивания
std::
strcmp
(
what
(
)
, other.
what
(
)
)
==
0
.
Параметры
| other | - | другой объект исключения для присваивания |
Возвращаемое значение
* this
std::bad_array_new_length:: what
|
virtual
const
char
*
what
(
)
const
noexcept
;
|
(начиная с C++11)
(constexpr начиная с C++26) |
|
Возвращает пояснительную строку.
Возвращаемое значение
Указатель на определяемую реализацией нуль-терминированную строку с пояснительной информацией. Строка подходит для преобразования и отображения как std::wstring . Гарантируется, что указатель остается действительным по крайней мере до тех пор, пока не будет уничтожен объект исключения, из которого он получен, или пока не будет вызвана неконстантная функция-член (например, оператор присваивания копированием) для объекта исключения.
|
Возвращаемая строка кодируется с использованием обычного литерального кодирования во время константной оценки. |
(начиная с C++26) |
Примечания
Реализациям разрешено, но не требуется, переопределять
what()
.
Унаследовано от std:: bad_alloc
Унаследовано от std:: exception
Функции-члены
|
[virtual]
|
уничтожает объект исключения
(виртуальная публичная функция-член
std::exception
)
|
|
[virtual]
|
возвращает поясняющую строку
(виртуальная публичная функция-член
std::exception
)
|
Примечания
| Макрос тестирования возможностей | Значение | Стандарт | Возможность |
|---|---|---|---|
__cpp_lib_constexpr_exceptions
|
202411L
|
(C++26) | constexpr для типов исключений |
Пример
Три случая, когда должно выбрасываться исключение
std::bad_array_new_length
:
#include <climits> #include <iostream> #include <new> int main() { try { int negative = -1; new int[negative]; } catch (const std::bad_array_new_length& e) { std::cout << "1) " << e.what() << ": negative size\n"; } try { int small = 1; new int[small]{1,2,3}; } catch (const std::bad_array_new_length& e) { std::cout << "2) " << e.what() << ": too many initializers\n"; } try { long large = LONG_MAX; new int[large][1000]; } catch (const std::bad_array_new_length& e) { std::cout << "3) " << e.what() << ": too large\n"; } std::cout << "End\n"; }
Возможный вывод:
1) std::bad_array_new_length: negative size 2) std::bad_array_new_length: too many initializers 3) std::bad_array_new_length: too large End
Смотрите также
|
функции выделения памяти
(функция) |
|
|
исключение, выбрасываемое при неудачном выделении памяти
(класс) |