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 :
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!