Les tableaux de const sont-ils déclarés dans une fonction stockée dans la stack?

si cela était déclaré dans une fonction, serait-il déclaré sur la stack? (c’est ce qui me fait me demander)

void someFunction() { const unsigned int actions[8] = { e1, e2, etc... }; } 

Oui, ils sont sur la stack. Vous pouvez le voir en regardant l’extrait de code: il devra imprimer le message de destruction 5 fois.

 struct A { ~A(){ printf( "A destructed\n" ); } }; int main() { { const A anarray [5] = {A()} ; } printf( "inner scope closed\n"); } 

Si je comprends bien: oui. On m’a dit qu’il fallait qualifier les constantes avec static pour les mettre dans le segment de données, par exemple

 void someFunction() { static const unsigned int actions[8] = { e1, e2, etc... }; } 

Si vous ne voulez pas que votre tableau soit créé sur une stack, déclarez-le comme statique. Être const peut permettre au compilateur d’optimiser tout le tableau. Mais s’il sera créé, ce sera sur stack autant que je sache.

Oui, les variables non statiques sont toujours créées sur la stack.