Heim > Backend-Entwicklung > C++ > Kann „new int[0]' Speicher in C zuweisen und was sind die Auswirkungen?

Kann „new int[0]' Speicher in C zuweisen und was sind die Auswirkungen?

Patricia Arquette
Freigeben: 2024-12-29 18:00:26
Original
862 Leute haben es durchsucht

Can `new int[0]` Allocate Memory in C  , and What are the Implications?

Können leere Arrays in C mit „new int[0]“ zugewiesen werden?

In C die Verwendung des neuen Operators zum Zuweisen Gedächtnis wird oft eingesetzt. Es stellt sich jedoch eine Frage bezüglich der Zuweisung leerer Arrays mithilfe von new int[0]. Weist dieser Code Speicher zu und was legt der Standard dazu fest?

Standardperspektive

Gemäß 5.3.4/7 des C-Standards, wenn die direkte -new-declarator-Ausdruck als Null ausgewertet wird, weist die Zuordnungsfunktion ein Array ohne Elemente zu. Nichtsdestotrotz betont 3.7.3.1/2, dass die Dereferenzierung eines Zeigers, der aus einer Anfrage mit der Größe Null resultiert, zu einem undefinierten Verhalten führt.

In der Praxis

Trotz der im Standard vorgesehenen Toleranz Beim Zuweisen leerer Arrays wird darauf hingewiesen, dass dieser Vorgang möglicherweise trotzdem fehlschlägt. Folglich kann man den zugewiesenen Speicher nur sicher an Array-Löschen zur Freigabe weitergeben und so jeglichen direkten Speicherzugriff vermeiden.

Besonderer Hinweis

Eine Fußnote im Standard legt nahe, dass die Das Verhalten ahmt den Ansatz von malloc() oder calloc() in C nach, wobei eine Nullanforderung einen Nicht-Null-Zeiger zurückgibt. Diese Abweichung von C gewährleistet die plattformübergreifende Interoperabilität und ermöglicht die Zuweisung leerer Arrays in C.

Das obige ist der detaillierte Inhalt vonKann „new int[0]' Speicher in C zuweisen und was sind die Auswirkungen?. 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