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 :
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
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 ?
Partager