Passage de pointeur en parametre
Bonjour,
Voila j'ai une fonction à laquelle je donne en argument un pointeur initialisé à NULL. J'aimerais que de la mémoire lui soit allouée à l'intérieur de la fonction, que le contenu de cette mémoire soit également rempli à l'interieur de la fonction. Et lorsque je me retrouve dans mon programme appelant, que je puisse récupérer le contenu de là où pointe le pointeur.
j'ai fait la chose suivante :
programme appelant :
Code:
1 2 3 4 5
|
char *bufferDest=NULL;
x_lec_art_cle_dta(....,bufferDest);
//parametre de type LPSTR |
fonction appelée :
Code:
1 2 3 4 5 6 7 8
|
int _stdcall X_LEC_ART_CLE_DTA(....,LPSTR dest)
{
....
dest = calloc(10,1);
strcpy(dest,"salut");
.....
} |
Mais ça ne fonctionne pas
Lors du debugage je me suis aperçu de la chose suivante :
- initialisation à NULL du pointeur :
bufferDest : @0012FAC4 --> NULL
- appel de la fonction :
dest : @0012FA88 --> NULL
- allocation de mémoire :
dest : @0012FA88 --> 008F3CBC "\0"
- copie de la chaine "salut" :
dest : @0012FA88 --> 008F3CBC "salut\0"
- retour à la fonction appelante :
bufferDest : @0012FAC4 --> NULL
preuve que ça ne marche pas....Est-il donc possible de passer en parametre à une fonction un pointeur NULL, et qu'au retour de la fonction, le pointeur pointe vers une zone mémoire alloué....?