Existe-t-il un moyen de connaître et de générer la taille de pile requise par une fonction lors de la compilation en C? Voici ce que je voudrais savoir:Vérification de l'utilisation de la pile au moment de la compilation
Prenons une fonction:
void foo(int a) {
char c[5];
char * s;
//do something
return;
}
Lors de la compilation de cette fonction, je voudrais savoir combien d'espace pile, il consommera Whent il est appelé. Cela peut être utile pour détecter la déclaration sur la pile d'une structure cachant un gros tampon.
Je cherche quelque chose qui imprimerait quelque chose comme ceci:
fichier foo.c: fonction utilisation foo stack est n
octets
Est-il possible de ne pas regarder l'ensemble généré à savoir que ? Ou une limite qui peut être définie pour le compilateur? Mise à jour: Je ne cherche pas à éviter le débordement de la pile d'exécution pour un processus donné, je cherche un moyen de trouver avant l'exécution, si une utilisation de la pile de fonctions, telle que déterminée par le compilateur, est disponible en sortie du processus de compilation.
En d'autres termes: est-il possible de connaître la taille de tous les objets locaux d'une fonction? Je suppose que l'optimisation du compilateur ne sera pas mon ami, car une variable va disparaître mais une limite supérieure est bonne.
Au cas où vous vous poseriez, j'ai tapé le caractère secret '}' –
La question ne me semble pas claire. Je suppose que si vous écrivez plus sur pourquoi vous voulez savoir ceci et pourquoi vérifier le désassemblage ou l'exécutable (qui est la manière la plus facile de vérifier la sortie du compilateur) n'est pas acceptable, peut-être quelqu'un pourrait trouver une solution facile? – Suma