On dit que la variable locale sera allouée et désallouée automatiquement lorsque la fonction se termine en C/C++. Selon ma compréhension, une fois désallouée, la valeur détenue par la variable locale sera également détruite !!! S'il vous plaît me corriger si je me trompeAllocation de mémoire de pile
Tenir compte du code ci-dessous:
void doSomething(int** num)
{
int a = 10;
*num = &a;
} // end of function and a will be destroyed
void main()
{
int* number;
doSomething(&number);
cout << *number << endl; // print 10 ???
}
Quelqu'un pourrait me préciser?
Ugh, s'il vous plaît ne pas fais 'void main()'. – birryree
Avez-vous essayé de l'exécuter? – Josh
Il imprime '10' uniquement parce que la valeur n'a pas encore été écrasée par quelque chose d'autre. C'est seulement à cause de la chance que cela semble fonctionner. – Gabe