Heim  >  Artikel  >  Backend-Entwicklung  >  Werden C-Destruktoren für globale und statische Variablen aufgerufen?

Werden C-Destruktoren für globale und statische Variablen aufgerufen?

DDD
DDDOriginal
2024-11-06 13:22:02391Durchsuche

Do C   Destructors Get Called for Global and Static Variables?

Ruft C Destruktoren für globale und klassenstatische Variablen auf?

Entgegen einigen Annahmen ruft C tatsächlich Destruktoren sowohl für globale als auch für Klassenvariablen auf -statische Variablen. Ihre Zerstörung erfolgt an zwei bestimmten Zeitpunkten:

  1. Bei der Rückkehr von Main: Wenn die Funktion main() abgeschlossen wird, werden alle globalen und klassenstatischen Variablen zerstört. Dies steht im Einklang mit § 3.6.3 des C 03-Standards, der diese Zerstörung „als Ergebnis der Rückkehr von main“ vorschreibt.
  2. Beim Aufruf von Exit: Wenn die Funktion „exit()“ vorhanden ist Wenn es in Ihrem Programm eingesetzt wird, löst es die Zerstörung globaler und klassenstatischer Variablen „als Ergebnis des Aufrufs von Exit“ aus, wie in § 3.6.3 beschrieben.

Es ist bemerkenswert, dass die Reihenfolge der Zerstörung für Diese Variablen spiegeln die umgekehrte Reihenfolge ihres Konstruktors oder ihrer dynamischen Initialisierung wider. Darüber hinaus werden gemäß § 9.4.2 7 statische Datenelemente genauso initialisiert und zerstört wie nicht lokale Objekte.

Es ist jedoch wichtig zu beachten, dass Destruktoren ohne beobachtbares Verhalten nicht aufgerufen werden dürfen. Dies wird in Terry Mahaffeys Antwort auf „Ist ein C-Destruktor garantiert erst am Ende des Blocks aufgerufen?“ näher erläutert.

Das obige ist der detaillierte Inhalt vonWerden C-Destruktoren für globale und statische Variablen aufgerufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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