Heim > Backend-Entwicklung > C++ > Hauptteil

Woher weiß „delete[]' die Größe des Arrays, das es löscht?

Barbara Streisand
Freigeben: 2024-11-17 09:07:03
Original
748 Leute haben es durchsucht

How Does `delete[]` Know the Size of the Array It's Deleting?

Delete[] und Array-Erkennung

In C wird delete[] verwendet, um Arrays zu löschen, die mit new[] zugewiesen wurden. Woher weiß das System jedoch, dass ein Zeiger auf ein Array zeigt?

Compiler und Betriebssystem

Während die ursprüngliche Frage darauf hindeutet, dass die Sprache oder der Compiler davon nichts weiß Abhängig vom Typ des Zeigers ist die Realität differenzierter. Der Compiler weiß nicht, ob ein Zeiger ein Array oder ein Einzelelementzeiger ist. Das Betriebssystem (OS) kann jedoch die Art der mit new vorgenommenen Zuweisung verfolgen.

Speicherverwaltung

Wenn ein Array mit new[] zugewiesen wird, Speicher wird nicht nur für die Array-Elemente reserviert, sondern auch für Metadaten, die die Array-Größe umfassen. Diese Metadaten werden in einem Header vor den Array-Elementen gespeichert. Wenn delete[] verwendet wird, überprüft das Betriebssystem diesen Header, um die Array-Größe zu bestimmen.

Einzelnes Element vs. Array

Für den Fall, dass ein einzelnes Element zugewiesen wird Bei Verwendung von new (wie int* num = new int(1);) werden keine Metadaten hinzugefügt. Wenn also deleteForMe(num); aufgerufen wird, löscht das Betriebssystem nur ein einzelnes int.

Das obige ist der detaillierte Inhalt vonWoher weiß „delete[]' die Größe des Arrays, das es löscht?. 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