Namespaces
Variants

Standard library header <new>

From cppreference.net
Standard library headers

Este encabezado es parte de la biblioteca de gestión de memoria dinámica , en particular proporciona características de gestión de memoria de bajo nivel .

Contenidos

Clases

excepción lanzada cuando falla la asignación de memoria
(clase)
excepción lanzada en asignación de array con longitud inválida
(clase)
tipo usado para pasar alineación a funciones de asignación y liberación conscientes de alineación
(enum)

Tipos

tipo de puntero a función del manejador new
(typedef)

Etiquetas

etiqueta usada para seleccionar una función de asignación que no lanza excepciones
(etiqueta)
etiqueta usada para seleccionar sobrecargas de destroying-delete de operator delete
(etiqueta)

Constantes

desplazamiento mínimo para evitar falso sharing
desplazamiento máximo para promover true sharing
(constante)

Funciones

funciones de asignación
(función)
funciones de liberación
(función)
obtiene el manejador new actual
(función)
registra un nuevo manejador
(función)
(C++17)
barrera de optimización de punteros
(plantilla de función)

Sinopsis

// todos los entornos independientes
namespace std {
  // errores de asignación de almacenamiento
  class bad_alloc;
  class bad_array_new_length;
  struct destroying_delete_t
  {
    explicit destroying_delete_t() = default;
  };
  inline constexpr destroying_delete_t destroying_delete{};
  // control global del operador 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;
  // pointer optimization barrier
  template<class T> constexpr T* launder(T* p) noexcept;
  // tamaño de interferencia de hardware
  inline constexpr size_t hardware_destructive_interference_size =
    /* definido por la implementación */;
  inline constexpr size_t hardware_constructive_interference_size =
    /* definido por la implementación */;
}
// asignación y desasignación de almacenamiento
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;

Clase std::bad_alloc

namespace std {
  class bad_alloc : public exception
  {
  public:
    // ver descripción para la especificación de las funciones miembro especiales
    constexpr const char* what() const noexcept override;
  };
}

Clase std::bad_array_new_length

namespace std {
  class bad_array_new_length : public bad_alloc
  {
  public:
    // ver descripción para la especificación de las funciones miembro especiales
    constexpr const char* what() const noexcept override;
  };
}