Spec-Zone.ru › C++

std::bad_alloc

Определён в заголовке <new>
class bad_alloc;

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

cpp/error/exception

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

Функции-члены

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

std::bad_alloc::bad_alloc

bad_alloc() throw();
(1) (до C++11)
bad_alloc() noexcept;
(начиная с C++11)
bad_alloc( const bad_alloc& other ) throw();
(2) (до 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)
(constexpr начиная с C++26)

Возвращает поясняющую строку.

Возвращаемое значение

Указатель на строку с завершающим нулём, определяемую реализацией и содержащую пояснительную информацию. Строка пригодна для преобразования и отображения в виде std::wstring. Указатель гарантированно действителен как минимум до уничтожения объекта исключения, от которого он получен, или до вызова неконстантной функции-члена (например, оператора присваивания копированием) для объекта исключения.

При вычислении во время компиляции возвращаемая строка кодируется с использованием обычной кодировки литералов.

(начиная с C++26)

Примечания

Реализациям разрешено, но не обязательно, переопределять what().

Унаследовано от std::exception

Функции-члены

(деструктор)
[виртуальная]
уничтожает объект исключения
(виртуальная открытая функция-член класса std::exception)
what
[виртуальная]
возвращает поясняющую строку
(виртуальная открытая функция-член класса std::exception)

Примечания

Макрос проверки поддержки возможностей Значение Стандарт Возможность
__cpp_lib_constexpr_exceptions 202411L (C++26) constexpr для типов исключений

Пример

#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/cpp/memory/new/bad_alloc

Spec-Zone.ru

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