std::bad_array_new_length
| Definiert im Header <new> |
||
| class bad_array_new_length; |
(seit C++11) | |
std::bad_array_new_length ist der Typ des Objekts, das als Ausnahme von den new-Ausdrücken geworfen wird, um ungültige Array-Längen zu melden, wenn
- Die Array-Länge negativ ist,
- Die Gesamtgröße des neuen Arrays den implementierungsdefinierten Maximalwert überschreiten würde,
- Die Anzahl der Initialisierer-Klauseln die Anzahl der zu initialisierenden Elemente überschreitet.
Nur die erste Array-Dimension kann diese Ausnahme auslösen; andere Dimensionen sind konstante Ausdrücke und werden zur Kompilierungszeit überprüft.
Vererbungdiagramm
Inhalt |
[bearbeiten] Member-Funktionen
| (Konstruktor) |
konstruiert ein neues bad_array_new_length-Objekt(öffentliche Memberfunktion) |
| operator= |
ersetzt das bad_array_new_length-Objekt(öffentliche Memberfunktion) |
| what |
gibt den erklärenden String zurück (öffentliche Memberfunktion) |
std::bad_array_new_length::bad_array_new_length
| bad_array_new_length() noexcept; |
(1) | (seit C++11) |
| bad_array_new_length( const bad_array_new_length& other ) noexcept; |
(2) | (seit C++11) |
Konstruiert ein neues bad_array_new_length-Objekt mit einem implementierungsdefinierten nullterminierten Byte-String, der über what() zugänglich ist.
std::bad_array_new_length haben, dann gilt std::strcmp(what(), other.what()) == 0.Parameter
| Sonstiges | - | ein anderes Ausnahmeobjekt zum Kopieren |
std::bad_array_new_length::operator=
| bad_array_new_length& operator=( const bad_array_new_length& other ) noexcept; |
(seit C++11) | |
Weist den Inhalt denen von other zu. Wenn *this und other beide den dynamischen Typ std::bad_array_new_length haben, dann gilt std::strcmp(what(), other.what()) == 0 nach der Zuweisung.
Parameter
| Sonstiges | - | ein anderes Ausnahmeobjekt zum Zuweisen |
Rückgabewert
*this
std::bad_array_new_length::what
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.
Erbt von std::bad_alloc
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
Drei Bedingungen, unter denen std::bad_array_new_length ausgelöst werden sollte
#include <climits> #include <iostream> #include <new> int main() { try { int negative = -1; new int[negative]; } catch (const std::bad_array_new_length& e) { std::cout << "1) " << e.what() << ": negative size\n"; } try { int small = 1; new int[small]{1,2,3}; } catch (const std::bad_array_new_length& e) { std::cout << "2) " << e.what() << ": too many initializers\n"; } try { long large = LONG_MAX; new int[large][1000]; } catch (const std::bad_array_new_length& e) { std::cout << "3) " << e.what() << ": too large\n"; } std::cout << "End\n"; }
Mögliche Ausgabe
1) std::bad_array_new_length: negative size 2) std::bad_array_new_length: too many initializers 3) std::bad_array_new_length: too large End
[bearbeiten] Siehe auch
| Allokationsfunktionen (Funktion) | |
| Ausnahme, die ausgelöst wird, wenn die Speicherallokation fehlschlägt (Klasse) |