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 : 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
fonction appelée :
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");
     .....
}
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é....?