void someFunc()
{
int stackInt = 4;
someOtherFunc(&stackInt);
}
Est-il le cas que l'espace d'adressage de stackInt pourrait être réattribuée après la fin someFunc, ce qui rend impropre à supposer que la valeur transmise à someOtherFunc représente la variable stackInt avec la valeur 4 que a été passé à elle? En d'autres termes, devrais-je éviter de passer des variables de pile par adresse et de m'attendre à ce qu'elles soient encore en vie après la fin de la fonction dans laquelle elles ont été initialisées?C pile/portée, la durée de vie variable après les fonctions se termine
Quelqu'un me corrige si je me trompe, mais n'est-il pas prudent de passer l'adresse de 'stackInt' à' someOtherFunc'? L'espace ne sera réalloué qu'après le retour de Func - ce qui arrive seulement après que someOtherFunc est retourné. Le problème est seulement de retourner l'adresse des variables de la pile. Ainsi, si vous renvoyez '& stackInt' de' someFunc', vous êtes en train d'invoquer des problèmes, sinon vous êtes en sécurité. – Amarghosh
Vous avez généralement raison, mais vous pouvez imaginer du code où someOtherFunc écarte quelque part ce pointeur (par exemple une variable globale) de sorte qu'il y ait une référence à celui-ci même après que someOtherFunc soit retourné. C'est là que vous avez des problèmes. – nall
@nall Merci pour cela :) – Amarghosh