21 Language support library [language.support]

21.6 Dynamic memory management [support.dynamic]

21.6.3 Storage allocation errors [alloc.errors]

21.6.3.1 Class bad_­alloc [bad.alloc]

namespace std {
  class bad_alloc : public exception {
  public:
    bad_alloc() noexcept;
    bad_alloc(const bad_alloc&) noexcept;
    bad_alloc& operator=(const bad_alloc&) noexcept;
    const char* what() const noexcept override;
  };
}

Класс bad_­alloc определяет тип объектов, создаваемых реализацией как исключения, чтобы сообщить об ошибке выделения памяти.

bad_alloc() noexcept;

Effects: Создает объект класса bad_­alloc.

bad_alloc(const bad_alloc&) noexcept; bad_alloc& operator=(const bad_alloc&) noexcept;

Effects: Копирует объект класса bad_­alloc.

const char* what() const noexcept override;

Returns: An реализации определенных НТБ .

Remarks: Сообщение может быть null-terminated multibyte string, подходящим для преобразования и отображенным как wstring ([string.classes], [locale.codecvt]).

21.6.3.2 Class bad_­array_­new_­length [new.badlength]

namespace std {
  class bad_array_new_length : public bad_alloc {
  public:
    bad_array_new_length() noexcept;
    const char* what() const noexcept override;
  };
}

Класс bad_­array_­new_­length определяет тип объектов, создаваемых реализацией как исключения, чтобы сообщить о попытке выделить массив размером меньше нуля или больше определенного реализацией limit ([expr.new]).

bad_array_new_length() noexcept;

Effects: создает объект класса bad_­array_­new_­length.

const char* what() const noexcept override;

Returns: An реализации определенных НТБ .

Remarks: Сообщение может быть null-terminated multibyte string, подходящим для преобразования и отображенным как wstring ([string.classes], [locale.codecvt]).

21.6.3.3 Type new_­handler [new.handler]

using new_handler = void (*)();

Тип a, handler function который будет вызываться operator new() or operator new[]() ([new.delete]), когда они не могут удовлетворить запрос на дополнительное хранилище.

Required behavior: A new_­handler должен выполнить одно из следующих действий:

  • сделать больше памяти доступным для распределения, а затем вернуть;

  • генерировать исключение типа bad_­alloc или класса, производного от bad_­alloc;

  • прекратить выполнение программы, не возвращаясь к вызывающей стороне.

21.6.3.4 set_­new_­handler [set.new.handler]

new_handler set_new_handler(new_handler new_p) noexcept;

Effects: Устанавливает функцию, обозначенную new_­p как текущая new_­handler.

Returns: Предыдущий new_­handler.

Remarks: Начальный new_­handler - это нулевой указатель.

21.6.3.5 get_­new_­handler [get.new.handler]

new_handler get_new_handler() noexcept;

Returns: Текущий new_­handler. [ Note: Это может быть значение нулевого указателя. ] end note