Namespaces
Variants

Standard library header <new>

From cppreference.net
Standard library headers

Dieser Header ist Teil der dynamischen Speicherverwaltung Bibliothek und bietet insbesondere Low-Level-Speicherverwaltungsfunktionen an.

Inhaltsverzeichnis

Klassen

Exception, die bei fehlgeschlagener Speicherallokation geworfen wird
(Klasse)
Exception, die bei Allokation eines Arrays mit ungültiger Länge geworfen wird
(Klasse)
Typ zur Übergabe der Ausrichtung an ausrichtungsbewusste Allokations- und Deallokationsfunktionen
(Enumeration)

Typen

Funktionszeigertyp des New-Handlers
(Typdefinition)

Tags

Ein Tag zur Auswahl einer nicht-werfenden Allokationsfunktion
(Tag)
Ein Tag zur Auswahl der Destroying-Delete-Überladungen von operator delete
(Tag)

Konstanten

Minimale Verschiebung zur Vermeidung von False Sharing
Maximale Verschiebung zur Förderung von True Sharing
(Konstante)

Funktionen

Allokationsfunktionen
(Funktion)
Deallokationsfunktionen
(Funktion)
Ermittelt den aktuellen New-Handler
(Funktion)
Registriert einen neuen Handler
(Funktion)
(C++17)
Pointer-Optimierungsbarriere
(Funktionstemplate)

Übersicht

// alle freistehend
namespace std {
  // Speicherzuweisungsfehler
  class bad_alloc;
  class bad_array_new_length;
  struct destroying_delete_t
  {
    explicit destroying_delete_t() = default;
  };
  inline constexpr destroying_delete_t destroying_delete{};
  // globaler Operator new-Steuerung
  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;
  // Zeiger-Optimierungsbarriere
  template<class T> constexpr T* launder(T* p) noexcept;
  // hardware interference size
  inline constexpr size_t hardware_destructive_interference_size =
    /* implementierungsdefiniert */;
  inline constexpr size_t hardware_constructive_interference_size =
    /* implementierungsdefiniert */;
}
// Speicherallokation und -freigabe
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;

Klasse std::bad_alloc

namespace std {
  class bad_alloc : public exception
  {
  public:
    // siehe Beschreibung für die Spezifikation der speziellen Elementfunktionen
    constexpr const char* what() const noexcept override;
  };
}

Klasse std::bad_array_new_length

namespace std {
  class bad_array_new_length : public bad_alloc
  {
  public:
    // siehe Beschreibung für die Spezifikation der speziellen Elementfunktionen
    constexpr const char* what() const noexcept override;
  };
}