Partager via


Considérations supplémentaires sur le démarrage

En langage C++, la construction et la destruction d'objets peuvent impliquer l'exécution de code utilisateur. Par conséquent, il est important de comprendre quelles initialisations ont lieu avant l'entrée dans main et quels destructeurs sont appelés après la sortie de main. (Pour obtenir des informations détaillées sur la construction et la destruction d'objets, consultez Constructeurs et Destructeurs.)

Les initialisations suivantes ont lieu avant l'entrée dans main :

  • Mise à zéro par défaut des données statiques. Toutes les données statiques sans initialiseurs explicites sont mises à zéro avant d'exécuter tout autre code, y compris l'initialisation du runtime. Les données membres statiques doivent encore être définies explicitement.

  • Initialisation des objets statiques globaux dans une unité de traduction. Cela peut se produire avant l'entrée dans main ou avant la première utilisation d'une fonction ou d'un objet quelconque dans l'unité de traduction de l'objet.

Section spécifique à Microsoft

Dans Microsoft C++, les objets statiques globaux sont initialisés avant l'entrée dans main.

FIN de la section spécifique à Microsoft

Des objets statiques globaux mutuellement interdépendants mais figurant dans des unités de traduction distinctes peuvent provoquer un comportement incorrect.

Voir aussi

Référence

Démarrage et terminaison (C++)