Zerstörung globaler und klassenstatischer Variablen in C
In C sind Destruktoren normalerweise mit dynamisch zugewiesenen Objekten verknüpft, aber dieses Verhalten erstreckt sich auch auf global und klassenstatisch deklarierte Variablen? Um dieses Problem zu klären, wollen wir uns mit den Einzelheiten befassen.
Zunächst ist es wichtig zu verstehen, dass globale und klassenstatische Variablen typischerweise im Datenabschnitt des Programmspeichers und nicht im Stapel, wo lokale Variablen liegen, zugewiesen werden wohnen. Diese Unterscheidung wirft die Frage auf: Wann werden Destruktoren für diese Variablen in Rechnung gestellt?
Gemäß dem C 03-Standard (Abschnitt § 3.6.3) Destruktoren für initialisierte statische Speicherdauerobjekte (solche, die im Blockbereich oder Namespacebereich deklariert werden). ) werden beim Verlassen der Hauptfunktion oder beim Aufrufen von „exit“ aufgerufen. Diese Objekte werden nacheinander zerstört, beginnend mit dem zuletzt initialisierten und endend mit dem frühesten. Dieses Verhalten gilt sowohl für statisch als auch dynamisch initialisierte Objekte.
Darüber hinaus legt Abschnitt § 9.4.2 7 fest, dass statische Datenelemente auf die gleiche Weise wie nicht lokale Objekte initialisiert und zerstört werden. Es ist jedoch zu beachten, dass Destruktoren ohne beobachtbares Verhalten möglicherweise nicht aufgerufen werden.
Das obige ist der detaillierte Inhalt vonWann werden Destruktoren für globale und klassenstatische Variablen in C aufgerufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!