Heim > Backend-Entwicklung > C++ > Hauptteil

Wann werden Destruktoren für globale und klassenstatische Variablen in C aufgerufen?

Mary-Kate Olsen
Freigeben: 2024-11-07 14:12:03
Original
294 Leute haben es durchsucht

When are destructors invoked for global and class-static variables in C  ?

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!

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