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 :
fonction appelée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 char *bufferDest=NULL; x_lec_art_cle_dta(....,bufferDest); //parametre de type LPSTR
Mais ça ne fonctionne pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int _stdcall X_LEC_ART_CLE_DTA(....,LPSTR dest) { .... dest = calloc(10,1); strcpy(dest,"salut"); ..... }
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é....?
Partager