Heim >Backend-Entwicklung >C++ >Initialisiert der „neue' Operator in C den Speicher immer auf Null?
Operator new initialisiert den Speicher auf Null
Trotz des allgemeinen Missverständnisses, dass der neue Operator den Speicher nicht mit Nullen initialisiert, kann er dies tatsächlich erreichen Aufgabe unter bestimmten Bedingungen.
In C gibt es zwei Hauptszenarien, in denen der neue Operator Null ausführt Initialisierung:
Klammern Initialisierung:
Wenn „new“ folgt, folgen Klammern und eine leere Initialisierungsliste, wie z. B. wsk = new unsigned int() ;, ruft es explizit den Standardkonstruktor des Typs auf. Für primitive Typen wie unsigned int initialisiert der Standardkonstruktor den Speicher auf Null.
Array-Initialisierung in Klammern:
Ähnlich wie im vorherigen Szenario, Durch die Verwendung von Klammern und einer leeren Initialisierungsliste innerhalb der Array-Deklaration, wie z. B. wsa = new unsigned int[5]();, wird jedes Element des initialisiert Array auf Null.
Im bereitgestellten Beispielcode zeigen die folgenden Zeilen die Nullinitialisierung:
wsk2 = new unsigned int(5);
Dies initialisiert wsk2 auf den Wert 5.
wsk2 = new unsigned int;
Dadurch wird wsk2 auf Null initialisiert, da es die Klammersyntax ohne Initialisierungsliste verwendet. Dieses Verhalten gilt sowohl für Skalare als auch für Arrays.
Im zweiten Teil des Beispiels bestätigt die Ausgabe die Nullinitialisierung:
wsk2: 0x928e008 5 wsk2: 0x928e008 0
Die erste Zeile zeigt, dass wsk2 auf die Adresse 0x928e008 zeigt und enthält den Wert 5. Nach dem Löschen von wsk2 und dem Erstellen eines neuen mit new unsigned int; zeigt die zweite Zeile, dass es nun auf dasselbe zeigt Adresse (0x928e008), enthält aber Null.
Das obige ist der detaillierte Inhalt vonInitialisiert der „neue' Operator in C den Speicher immer auf Null?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!