Heim > Backend-Entwicklung > C++ > Wo im C-Standard wird die Dereferenzierung eines nicht initialisierten Zeigers als undefiniertes Verhalten definiert?

Wo im C-Standard wird die Dereferenzierung eines nicht initialisierten Zeigers als undefiniertes Verhalten definiert?

Mary-Kate Olsen
Freigeben: 2024-12-16 20:59:11
Original
770 Leute haben es durchsucht

Where in the C   Standard is Dereferencing an Uninitialized Pointer Defined as Undefined Behavior?

Bestimmen undefinierten Verhaltens für die Dereferenzierung nicht initialisierter Zeiger im C-Standard

Die gestellte Frage versucht, den spezifischen Abschnitt im C-Standard zu verstehen, der dies berücksichtigt Dereferenzierung eines nicht initialisierten Zeigers als undefiniertes Verhalten. Während frühere Verweise auf 5.3.1/1 und 3.7.3.2/4 relevante Informationen liefern, geben sie nicht explizit das undefinierte Verhalten im Zusammenhang mit der Verwendung nicht initialisierter Zeiger an.

Die Antwort liegt in Abschnitt 4.1, der sich mit der L-Wert-Konvertierung befasst zu R-Wert (Hervorhebung hinzugefügt):

"Ein L-Wert (3.10) eines Nicht-Funktions- und Nicht-Array-Typs T kann in einen R-Wert konvertiert werden. Wenn T ein unvollständiger Typ ist, ist ein Programm, das diese Konvertierung erfordert, falsch Objekt vom Typ T und kein Objekt eines von T abgeleiteten Typs ist, oder wenn das Objekt nicht initialisiert ist, ein Programm, das diese Konvertierung erfordert hat undefiniertes Verhalten."

In diesem Abschnitt heißt es eindeutig, dass der Versuch, einen L-Wert (z. B. einen Zeiger) zu verwenden, der auf ein nicht initialisiertes Objekt verweist, zu undefiniertem Verhalten führt. Daher zeigt das bereitgestellte Codebeispiel:

int* ptr;
*ptr = 0;
Nach dem Login kopieren

tatsächlich undefiniertes Verhalten, da der Zeiger ptr ohne Initialisierung verwendet wird.

Für dieses Thema wird im C-Standard nach „nicht initialisiert“ gesucht " werden zusätzliche Abschnitte enthüllen, die das undefinierte Verhalten im Zusammenhang mit nicht initialisierten Objekten berühren.

Das obige ist der detaillierte Inhalt vonWo im C-Standard wird die Dereferenzierung eines nicht initialisierten Zeigers als undefiniertes Verhalten definiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage