std::bad_alloc
| Definiert im Header <new> |
||
| class bad_alloc; |
||
std::bad_alloc ist der Typ des Objekts, das von den Speicherzuweisungsfunktionen als Ausnahme geworfen wird, um einen Fehler bei der Speicherzuweisung zu melden.
Vererbungdiagramm
Inhalt |
[bearbeiten] Memberfunktionen
| (Konstruktor) |
erstellt ein neues bad_alloc-Objekt(öffentliche Memberfunktion) |
| operator= |
weist das bad_alloc-Objekt zu(öffentliche Memberfunktion) |
| what |
gibt den erklärenden String zurück (öffentliche Memberfunktion) |
std::bad_alloc::bad_alloc
| (1) | ||
bad_alloc() throw(); |
(bis C++11) | |
| bad_alloc() noexcept; |
(seit C++11) | |
| (2) | ||
bad_alloc( const bad_alloc& other ) throw(); |
(bis C++11) | |
| bad_alloc( const bad_alloc& other ) noexcept; |
(seit C++11) | |
Konstruiert ein neues bad_alloc-Objekt mit einem implementierungsdefinierten nullterminierten Byte-String, der über what() zugänglich ist.
std::bad_alloc haben, dann ist std::strcmp(what(), other.what()) == 0.(seit C++11)Parameter
| Sonstiges | - | ein anderes Ausnahmeobjekt zum Kopieren |
std::bad_alloc::operator=
| bad_alloc& operator=( const bad_alloc& other ) throw(); |
(bis C++11) | |
| bad_alloc& operator=( const bad_alloc& other ) noexcept; |
(seit C++11) | |
Weist den Inhalt dem von other zu. Wenn *this und other beide den dynamischen Typ std::bad_alloc haben, dann ist std::strcmp(what(), other.what()) == 0 nach der Zuweisung.(seit C++11)
Parameter
| Sonstiges | - | ein anderes Ausnahmeobjekt zum Zuweisen |
Rückgabewert
*this
std::bad_alloc::what
| virtual const char* what() const throw(); |
(bis C++11) | |
virtual const char* what() const noexcept; |
(seit C++11) (constexpr seit C++26) |
|
Gibt den erklärenden String zurück.
Rückgabewert
Zeiger auf einen implementierungsdefinierten, nullterminierten String mit erläuternden Informationen. Der String kann für die Konvertierung und Anzeige als std::wstring verwendet werden. Der Zeiger ist garantiert gültig, mindestens bis das Ausnahmeobjekt, von dem er stammt, zerstört wird, oder bis eine nicht-const Memberfunktion (z. B. der Kopierzuweisungsoperator) für das Ausnahmeobjekt aufgerufen wird.
|
Der zurückgegebene String ist während der konstanten Auswertung mit der gewöhnlichen Literal-Codierung kodiert. |
(seit C++26) |
Anmerkungen
Implementierungen dürfen what() überschreiben, sind aber nicht dazu verpflichtet.
Abgeleitet von std::exception
Memberfunktionen
| [virtuell] |
zerstört das Ausnahmeobjekt (virtuelle öffentliche Memberfunktion von std::exception) |
| [virtuell] |
gibt einen erklärenden String zurück (virtuelle öffentliche Memberfunktion von std::exception) |
[bearbeiten] Hinweise
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_constexpr_exceptions |
202411L |
(C++26) | constexpr für Ausnahme-Typen |
[bearbeiten] Beispiel
#include <iostream> #include <new> int main() { try { while (true) { new int[100000000ul]; } } catch (const std::bad_alloc& e) { std::cout << "Allocation failed: " << e.what() << '\n'; } }
Mögliche Ausgabe
Allocation failed: std::bad_alloc
[bearbeiten] Siehe auch
| Allokationsfunktionen (Funktion) |