Заголовочный файл стандартной библиотеки <new>
Материал из cppreference.com
Этот заголовок является частью библиотеки управления динамической памятью, в частности, предоставляет возможности управления памятью низкого уровня.
Классы | |
| исключение генерируемое при сбое выделения памяти (класс) | |
(C++11) |
исключение генерируемое при выделении памяти для массива с недопустимой длиной (класс) |
| тип тега, используемый для выбора функции распределения без генерации исключения (класс) | |
(C++17) |
тип, используемый для передачи выравнивания функциям выделения и освобождения с учётом выравнивания (перечисление) |
(C++20) |
тип тега, используемый для идентификации перегруженных операций удаления оператора delete (класс) |
Типы | |
| тип указателя на функцию обработчика new (определение типа) | |
Константы | |
объект типа nothrow_t, используемый для выбора функции распределения памяти не генерирующей исключение (константа) | |
(C++20) |
объект типа std::destroying_delete_t, используемый для выбора перегрузок уничтожения-удаления operator delete (константа) |
| минимальное смещение, чтобы избежать ложного совместного использования максимальное смещение для продвижения истинного совместного использования (константа) | |
Функции | |
| функции распределения памяти (функция) | |
| функции освобождения памяти (функция) | |
(C++11) |
получает текущий обработчик new (функция) |
| регистрирует обработчик new (функция) | |
(C++17) |
барьер оптимизации указателя (шаблон функции) |
Краткое описание
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{};
// управление глобальным оператором 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> [[nodiscard]] constexpr T* launder(T* p) noexcept;
// размер аппаратных препятствий
inline constexpr size_t hardware_destructive_interference_size =
/* определено реализацией */;
inline constexpr size_t hardware_constructive_interference_size =
/* определено реализацией */;
}
// выделение и освобождение памяти
[[nodiscard]] void* operator new(std::size_t size);
[[nodiscard]] void* operator new(std::size_t size, std::align_val_t alignment);
[[nodiscard]] void* operator new(std::size_t size, const std::nothrow_t&) noexcept;
[[nodiscard]] 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;
[[nodiscard]] void* operator new[](std::size_t size);
[[nodiscard]] void* operator new[](std::size_t size, std::align_val_t alignment);
[[nodiscard]] void* operator new[](std::size_t size, const std::nothrow_t&) noexcept;
[[nodiscard]] 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;
[[nodiscard]] void* operator new (std::size_t size, void* ptr) noexcept;
[[nodiscard]] void* operator new[](std::size_t size, void* ptr) noexcept;
void operator delete (void* ptr, void*) noexcept;
void operator delete[](void* ptr, void*) noexcept;