Namespaces
Variants

Standard library header <new>

From cppreference.net
Standard library headers

Этот заголовок является частью библиотеки управления динамической памятью и в частности предоставляет функции низкоуровневого управления памятью .

Содержание

Классы

исключение, выбрасываемое при неудачном выделении памяти
(класс)
исключение, выбрасываемое при выделении массива с недопустимой длиной
(класс)
тип, используемый для передачи выравнивания в функции выделения и освобождения памяти с учетом выравнивания
(перечисление)

Типы

тип указателя на функцию обработчика new
(typedef)

Теги

тег, используемый для выбора нетерминирующей функции выделения
(тег)
тег, используемый для выбора перегрузок destroying-delete operator delete
(тег)

Константы

минимальное смещение для избежания ложного разделения
максимальное смещение для обеспечения истинного разделения
(константа)

Функции

функции выделения памяти
(функция)
функции освобождения памяти
(функция)
получает текущий обработчик new
(функция)
регистрирует новый обработчик
(функция)
(C++17)
барьер оптимизации указателей
(шаблон функции)

Синопсис

// все независимые (freestanding)
namespace std {
  // ошибки выделения памяти
  class bad_alloc;
  class bad_array_new_length;
  struct destroying_delete_t
  {
    explicit destroying_delete_t() = default;
  };
  inline constexpr destroying_delete_t destroying_delete{};
  // глобальный контроль operator new
  enum class align_val_t : size_t
  {
  };
  struct nothrow_t
  {
    explicit nothrow_t() = default;
  };
  extern const nothrow_t nothrow;
  using new_handler = void (*)();
  new_handler get_new_handler() noexcept;
  new_handler set_new_handler(new_handler new_p) noexcept;
  // барьер оптимизации указателей
  template<class T> constexpr T* launder(T* p) noexcept;
  // размер аппаратного вмешательства
  inline constexpr size_t hardware_destructive_interference_size =
    /* определяемый реализацией */;
  inline constexpr size_t hardware_constructive_interference_size =
    /* определяемый реализацией */;
}
// выделение и освобождение памяти
void*
operator new(std::size_t size);
void*
operator new(std::size_t size, std::align_val_t alignment);
void*
operator new(std::size_t size, const std::nothrow_t&) noexcept;
void*
operator new(std::size_t size,
             std::align_val_t alignment,
             const std::nothrow_t&) noexcept;
void
operator delete(void* ptr) noexcept;
void
operator delete(void* ptr, std::size_t size) noexcept;
void
operator delete(void* ptr, std::align_val_t alignment) noexcept;
void
operator delete(void* ptr, std::size_t size, std::align_val_t alignment) noexcept;
void
operator delete(void* ptr, const std::nothrow_t&) noexcept;
void
operator delete(void* ptr, std::align_val_t alignment, const std::nothrow_t&) noexcept;
void*
operator new[](std::size_t size);
void*
operator new[](std::size_t size, std::align_val_t alignment);
void*
operator new[](std::size_t size, const std::nothrow_t&) noexcept;
void*
operator new[](std::size_t size,
               std::align_val_t alignment,
               const std::nothrow_t&) noexcept;
void
operator delete[](void* ptr) noexcept;
void
operator delete[](void* ptr, std::size_t size) noexcept;
void
operator delete[](void* ptr, std::align_val_t alignment) noexcept;
void
operator delete[](void* ptr, std::size_t size, std::align_val_t alignment) noexcept;
void
operator delete[](void* ptr, const std::nothrow_t&) noexcept;
void
operator delete[](void* ptr, std::align_val_t alignment, const std::nothrow_t&) noexcept;
constexpr void*
operator new(std::size_t size, void* ptr) noexcept;
constexpr void*
operator new[](std::size_t size, void* ptr) noexcept;
void
operator delete(void* ptr, void*) noexcept;
void
operator delete[](void* ptr, void*) noexcept;

Класс std::bad_alloc

namespace std {
  class bad_alloc : public exception
  {
  public:
    // см. описание для спецификации специальных функций-членов
    constexpr const char* what() const noexcept override;
  };
}

Класс std::bad_array_new_length

namespace std {
  class bad_array_new_length : public bad_alloc
  {
  public:
    // см. описание для спецификации специальных функций-членов
    constexpr const char* what() const noexcept override;
  };
}