Heim >Backend-Entwicklung >C++ >Woher weiß „delete[]' die Größe des Arrays, das es freigibt?
Wie Speicherzuweiser die Array-Größe für Delete[] kennen
In C wird der Operator delete[] verwendet, um die Zuordnung eines Arrays von aufzuheben Objekte aus der Erinnerung. Im Gegensatz zum new[]-Operator, der explizit die Array-Größe erfordert, funktioniert delete[] jedoch scheinbar ohne diese Informationen. Wie bestimmt es die Größe des Arrays?
Wenn Sie mit new[] Speicher auf dem Heap zuweisen, weist der Speicherzuweiser einen zusammenhängenden Speicherblock für die Array-Elemente zu und speichert zusätzliche Informationen über die Zuweisung, einschließlich seine Größe. Diese Informationen werden normalerweise in einem Header direkt vor dem zugewiesenen Speicher gespeichert.
Standardisierung
Die Methode zum Speichern der Array-Größe mit dem zugewiesenen Speicher ist in C selbst nicht standardisiert . Verschiedene Speicherzuweiser implementieren verschiedene Techniken:
Abruf der Array-Größe
Während des Löschvorgangs löschen Sie[] Ruft die Array-Größe aus dem zugehörigen Header oder Speicherzuweiser ab. Durch Kenntnis der Größe kann delete[] die Zuordnung des gesamten Arrays von Objekten effizient aufheben.
Fazit
Zusammenfassend lässt sich sagen, dass der von new[] zugewiesene Speicher Informationen darüber enthält Größe, entweder durch Heap-Metadaten, Speicherheader oder Zeigerwerte. Diese Informationen werden vom Operator delete[] verwendet, um die Array-Größe während der Freigabe zu bestimmen und so eine effiziente Speicherverwaltung zu ermöglichen, ohne dass die Größe explizit angegeben werden muss.
Das obige ist der detaillierte Inhalt vonWoher weiß „delete[]' die Größe des Arrays, das es freigibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!