Heim > Backend-Entwicklung > C++ > Woher kennt „delete[]' die Größe eines Arrays beim Umgang mit Zeigern?

Woher kennt „delete[]' die Größe eines Arrays beim Umgang mit Zeigern?

DDD
Freigeben: 2024-11-17 22:25:02
Original
744 Leute haben es durchsucht

How Does `delete[]` Know the Size of an Array When Dealing with Pointers?

Wie unterscheidet delete[] Arrays von anderen Zeigern?

In C gibt der delete[]-Operator den für Arrays zugewiesenen Speicher frei, aber Woher weiß er, wann ein Zeiger ein Array ist?

Überlegungen zum Compiler

Trotz der Unsicherheit im von Ihnen bereitgestellten Code kann der Compiler nicht feststellen, ob ein Zeiger auf ein Array zeigt Array oder ein einzelnes Element.

Verwaltete Array-Informationen

Dynamisch zugewiesene Arrays speichern zusätzliche Informationen über den Zeiger auf das erste Element hinaus. Zu diesen Informationen gehört die Anzahl der Elemente im Array.

Delete[]-Vorgang

Wenn delete[] für einen Array-Zeiger verwendet wird, werden die zusätzlichen Informationen verwendet :

  • Identifizieren Sie, dass es sich bei der Zuordnung um ein Array handelt.
  • Geben Sie die Zuordnung der entsprechenden Anzahl von Elementen frei.

Alternative „Löschen“-Syntax

Einige haben die Notwendigkeit einer separaten delete[]-Syntax in Frage gestellt, da die Laufzeitbibliotheken bereits Informationen zur Array-Größe verwalten. Das ursprüngliche Designprinzip von C zielte jedoch darauf ab, den Overhead für Nicht-Array-Benutzer zu minimieren, indem die Zuweisung von zusätzlichem Speicherplatz für Nicht-Array-Speicherblöcke vermieden wurde.

Delete[] Specificity

Deshalb wird delete[] verwendet, um die Laufzeitbibliotheken explizit darüber zu informieren, dass es sich bei dem zugewiesenen Speicher um ein Array handelt, sodass sie die Zuordnung korrekt aufheben können. Während dies im modernen Computing übertrieben erscheinen mag, kann es in Szenarien, in denen die Speicheroptimierung von entscheidender Bedeutung ist, dennoch von Vorteil sein.

Das obige ist der detaillierte Inhalt vonWoher kennt „delete[]' die Größe eines Arrays beim Umgang mit Zeigern?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage