Clarification sur la durée de vie des variables et l'allocation
Bonjour, je débute en programmation C et j'aimerais comprendre un peu plus en détail ce qui se passe lors de l'exécution de ce bout de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| int* create(void)
{
int b = 3;
int *a = &b;
*a = 5;
return a;
}
int main(void)
{
int* number = test();
printf("%d", number);
} |
Si je fais un printf de number, cela m'affiche 5. Or je ne comprends pas car ma fonction create renvoi un pointeur sur une variable locale de cette fonction (à savoir la variable b).
Mais normalement, étant donné que c'est une variable locale, elle devrait être détruite à la fin de l'exécution de la fonction create. Du coup create va renvoyer un pointeur sur une variable qui va être détruite.
Ma question est, pourquoi alors number vaut 5 ? (Aurais-je fais une allocation dynamique sans m'en rendre compte ?