106Fermer108
Kevin KoflerLe 13/10/2010 à 18:43
Folco (./105) :
Kevin Kofler (./103) :
La raison technique, c'est qu'une variable globale ou statique non initialisée est alloué dans une section BSS et que par défaut cette section BSS est initialisée à zéro au démarrage du programme.
J'ai failli le dire, mais il est en kernel. Le fonctionnement est le même, le compilateur crée une bss pour les variables globales ?

Oui, sauf si elles ont une valeur initiale (et =0 est une valeur initiale), le comportement est le même qu'en _nostub. Et d'ailleurs le code de démarrage initialise la section BSS à zéro explicitement même en kernel parce que certains vieux kernels ne le faisaient pas (PreOs le fait, mais ça ne change rien de mettre à zéro 2 fois). (En revanche, l'allocation et le relogement sont effectués par le kernel.)