Maison  >  Article  >  développement back-end  >  Les destructeurs C sont-ils appelés pour les variables globales et statiques ?

Les destructeurs C sont-ils appelés pour les variables globales et statiques ?

DDD
DDDoriginal
2024-11-06 13:22:02391parcourir

Do C   Destructors Get Called for Global and Static Variables?

C appelle-t-il des destructeurs pour les variables statiques globales et de classe ?

Contrairement à certaines hypothèses, C appelle effectivement des destructeurs pour les variables globales et de classe -variables statiques. Leur destruction se produit à deux moments spécifiques :

  1. Au retour de Main : Lorsque la fonction main() se termine, toutes les variables globales et statiques de classe sont détruites. Ceci est conforme au § 3.6.3 de la norme C 03, qui impose cette destruction « suite au retour de main ».
  2. Lors de l'appel de Exit : Si la fonction exit() est utilisé dans votre programme, il déclenche la destruction des variables globales et statiques de classe « suite à l'appel de exit », comme indiqué au § 3.6.3.

Il est à noter que l'ordre de destruction pour ces variables reflètent l'ordre inverse de leur constructeur ou de leur initialisation dynamique. De plus, conformément au § 9.4.2 7, les données membres statiques sont initialisées et détruites de la même manière que les objets non locaux.

Cependant, il est important de noter que les destructeurs sans comportement observable ne peuvent pas être invoqués. Ceci est exploré plus en détail dans la réponse de Terry Mahaffey à « Un destructeur C est-il garanti de ne pas être appelé avant la fin du bloc ? »

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn