'soir
J'ai juste une petite question sur l'allocation, en effet j'ai remarqué que lorsque l'on alloue dynamiquement un pointeur dans une fonction et que ce pointeur a été declaré dans la fonction appelante, l'allocation n'était pas pris "en compte".
Comme un exemple vaut mieux qu'un long discours :
Pourquoi est-ce que je n'ai pas le message imprimant la valeur pointé par p ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #include <stdio.h> #include <stdlib.h> void alloc_int(int *p) { p = malloc(sizeof *p); if(!p) exit(EXIT_FAILURE); *p = 5; } int main(void) { int *p = NULL; alloc_int(p); if(p) { printf("Valeur : %d", *p); free(p); } else puts("L'allocation n'est pas prise en compte"); return EXIT_SUCCESS; }
Est-ce que c'est moi qui ai mal fait quelque chose ou est-ce que c'est dû à la durée de vie des données (l'espace alloué à p serait-donc libéré à la sortie de la fonction ?) ?
Une dernière question, admetons que j'ai une fonction qui retourne 0 si elle échoue et 1 dans le cas contraire. Comment faire pour qu'un espace mémoire préalablement alloué dans cette même fonction soit accesible dans la fonction appelante sachant que je ne peux utiliser les paramètres comme le montre mon exemple ?
Voilà, merci d'avance à ceux qui répondront
Partager