2010-02-03 8 views
1

J'ai une variable statique déclarée à l'intérieur d'une fonction, qui n'est pas explicitement initialisée à zéro.Initialisation des variables statiques de la fonction

Est-ce que toutes les variables statiques non initialisées à l'intérieur des fonctions sont mises à zéro par défaut, tout comme les variables statiques au niveau global (fichier)?

Répondre

6

Toutes les variables statiques sans initialiseur explicite sont initialisées à zéro.

Toutes les variables entrant dans le segment BSS sont initialisées à zéro.

En C, toutes les variables globales et statiques sans initialiseur explicite vont dans le segment BSS et sont donc zéro par défaut.

+0

Hmm .. merci codaddict .. mais pendant le débogage j'ai trouvé que la valeur indésirable est stockée dans l'une des variables statiques de la fonction .. mais il n'était pas cohérent que zéro est stocké dans cette variable et parfois les ordures sont stockées .. – inquisitive

+2

curieux: S'il vous plaît nous montrer la partie du code avec ce comportement. – codaddict

+0

@inquisitive: une possibilité est qu'un dépassement de tampon ait piétiné votre variable statique de fonction. Il y a d'autres possibilités, bien sûr. –

Questions connexes