std::bad_alloc
| Определено в заголовочном файле <new>
|
||
| class bad_alloc; |
||
std::bad_alloc это тип объекта, выбрасываемого в виде исключений функциями выделения памяти для сообщения о сбое выделения памяти.
Диаграмма наследования
Содержание |
[править] Функции-элементы
| (конструктор) |
создаёт новый объект bad_alloc (public функция-элемент) |
| operator= |
заменяет объект bad_alloc (public функция-элемент) |
| what |
возвращает пояснительную строку (public функция-элемент) |
std::bad_alloc::bad_alloc
| (1) | ||
| bad_alloc() throw(); |
(до C++11) | |
| bad_alloc() noexcept; |
(начиная с C++11) | |
| (2) | ||
| bad_alloc( const bad_alloc& other ) throw(); |
(до C++11) | |
| bad_alloc( const bad_alloc& other ) noexcept; |
(начиная с C++11) | |
Создаёт новый объект bad_alloc с определённой реализацией строкой байтов, заканчивающейся нулём, которая доступна через what().
std::bad_alloc , тогда std::strcmp(what(), other.what()) == 0. (начиная с C++11)Параметры
| other | — | другой объект исключения для копирования |
std::bad_alloc::operator=
| bad_alloc& operator=( const bad_alloc& other ) throw(); |
(до C++11) | |
| bad_alloc& operator=( const bad_alloc& other ) noexcept; |
(начиная с C++11) | |
Присваивает содержимое содержимому other. Если *this и other имеют динамический тип std::bad_alloc, тогда std::strcmp(what(), other.what()) == 0 после присваивания. (начиная с C++11)
Параметры
| other | — | другой объект исключения для присваивания |
Возвращаемое значение
*this
std::bad_alloc::what
| virtual const char* what() const throw(); |
(до C++11) | |
| virtual const char* what() const noexcept; |
(начиная с C++11) | |
Возвращает пояснительную строку.
Параметры
(нет)
Возвращаемое значение
Указатель на завершающуюся нулём строку с пояснительной информацией. Строка подходит для преобразования и отображения в виде std::wstring. Указатель гарантированно действителен, по крайней мере, до тех пор, пока объект исключения, из которого он получен, не будет уничтожен или пока не будет вызвана неконстантная функция-элемент (например, оператор присваивания копированием) для объекта исключения.
Примечание
Реализации могут, но не обязаны переопределять what().
Унаследован от std::exception
Функции-элементы
| [virtual] |
уничтожает объект исключения (virtual public of std::exception функция-элемент)
|
| [virtual] |
возвращает поясняющую строку (virtual public of std::exception функция-элемент)
|
[править] Пример
#include <iostream> #include <new> int main() { try { while (true) { new int[100000000ul]; } } catch (const std::bad_alloc& e) { std::cout << "Выделение не удалось: " << e.what() << '\n'; } }
Возможный вывод:
Выделение не удалось: std::bad_alloc
[править] Смотрите также
| функции распределения памяти (функция) |

