Spec-Zone.ru › C++

std::bad_alloc

Определено в заголовочном файле <new>
class bad_alloc;

std::bad_alloc — тип объекта, выбрасываемого функциями выделения памяти в качестве исключения для сообщения об ошибке выделения памяти.

cpp/error/exceptionstd-bad alloc-inheritance.svg

Диаграмма наследования

Члены

(конструктор)
создаёт новый объект bad_alloc
(публичный член-функция)
operator=
присваивает значение объекту bad_alloc
(публичный член-функция)
what
возвращает строку объяснения
(публичный член-функция)

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().

1) Конструктор по умолчанию.
2) Конструктор копирования. Если *this и other оба имеют динамический тип 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]
уничтожает объект исключения
(виртуальный публичный член-функция std::exception)
what
[virtual]
возвращает строку объяснения
(виртуальный публичный член-функция std::exception)

Пример

#include <iostream>
#include <new>
 
int main()
{
    try
    {
        while (true)
        {
            new int[100000000ul];
        }
    }
    catch (const std::bad_alloc& e)
    {
        std::cout << "Allocation failed: " << e.what() << '\n';
    }
}

Возможный вывод:

Allocation failed: std::bad_alloc

См. также

operator newoperator new[]
функции выделения памяти
(функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/new/bad_alloc

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API