Maison > développement back-end > C++ > le corps du texte

Quand les destructeurs sont-ils appelés pour les variables statiques globales et de classe en C ?

Patricia Arquette
Libérer: 2024-11-07 14:39:03
original
330 Les gens l'ont consulté

When are Destructors Called for Global and Class Static Variables in C  ?

Invocation de destructeur pour les variables statiques globales et de classe en C

En C, les objets sont généralement alloués dans la mémoire de la pile (pour les variables locales) et mémoire tas (pour les variables allouées dynamiquement). Cependant, les variables globales et les variables statiques de classe sont allouées dans la section données du programme, ce qui soulève la question : Quand leurs destructeurs sont-ils appelés ?

Selon la norme C 03 (§ 3.6.3), les destructeurs pour les objets initialisés avec une durée de stockage statique sont invoqués au retour de la fonction principale et lorsque la fonction de sortie est appelée. Ces objets sont détruits dans l'ordre inverse de leur achèvement par constructeur ou de leur achèvement d'initialisation dynamique.

De plus, pour les données membres de classe statiques (§ 9.4.2 7), leur comportement d'initialisation et de destruction est analogue à celui des objets non- objets locaux.

Cependant, si un destructeur n'a aucun comportement observable (c'est-à-dire qu'il n'effectue aucun effet secondaire), il ne peut pas être invoqué. En effet, le compilateur peut optimiser le code pour éviter d'appeler des destructeurs inutiles, comme décrit 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!