Quantité de variables globales annoncée par le compilateur
Bonjour, j'aurai besoin d'une précision sur la quantification des variables globales lors de la comiplation
J'avais en tête qu'au moment de la déclaration les octets étaient réservés dans la RAM donc étaient comptabilisés lors de la compilation
Idem pour les tableaux.
Or en travaillant sur l'optimisation des variables sur un projet, je me suis rendu compte
que le simple fait d'initialiser des tableaux augmentait le nombre d'octets des variables globales utilisées (lors de la compilation)
ex:
j'ai un programme qui fait 31246 octets avec 1781 octets de variables globales.
j'ai en autre ces tableaux declarés
Code:
1 2 3 4 5 6 7
|
unsigned int timerL[48];
unsigned long debut_timerL[48];
byte timerL_en_cours[6];
unsigned int timerR[32];
unsigned long debut_timerR[32];
byte timerR_en_cours[4]; |
Si dans le setup , j'initialise ces tableaux avec
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
for (byte i=0; i<6; i++)
{timerL_en_cours[i] =0;
}
for (byte i=0; i<4; i++)
{ timerR_en_cours[i] =0;
}
for (byte i=0; i<48; i++)
{timerL[i]=0;
debut_timerL[i]=0;
}
for (byte i=0; i<32; i++)
{timerR[i]=0;
debut_timerR[i]=0;
} |
le compilateur me dit maintenant 2273 octets de variables globales .
Je ne comprends pas puisque ces tableaux étaient déclarés donc la place en mémoire réservée ?
Qu'est ce qui m'échappe ?
Merci d'avance de votre éclaircissement
Ne s'use que si on s'en sert
Bonjour,
La déclaration suppose 490 octets. La différence est de 2273- 1781 = 492.
Si les variables ne sont pas utilisées le compilateur peut les retirer arbitrairement (selon niveau d'optimisation).
Les 2 octets de différence pourraient correspondre à la variable i si elle est déclarée en global.
Salutations