Bonjour,
d'après quelques pages lues sur le web, il semblerait que les variables globales en C/C++ se décomposent en deux catégories :
- les variables non initialisées, ou les variables initialisées à 0, qui seront stockées dans la partie .bss du programme, et seront initialisées à 0 avant l'appel du main()
- les variables initialisées à une valeur différente de 0, qui seront stockées accompagnées de leur valeur d'origine dans la partie .data du programme.
D'abord j'aimerais savoir si ce comportement est le même pour tous les compilateurs C/C++ ?
Ensuite est-il possible d'avoir un comportement différent qui consisterait à mettre les variables initialisées (même à 0) dans .data, et les autres dans .bss, permettant ainsi de zapper la partie qui met à 0 la partie .bss ?
En effet il me semble avoir lu que la norme C/C++ n'impose pas au compilateur d'initialiser à 0 les variables (globales ou non) qui ne le sont pas par le programmeur.
J'espère avoir été suffisamment clair. Ma question est plus sur la compréhension du langage / des compilateurs que pratique pour l'instant.
Merci d'avance