Bonjour,
j'ai un probleme de pointeur générique (je debute dans les pointeurs génériques et je maitrise pas encore entierement les pointeurs) , je m'explique :
soit un pointeur de typeje le fais pointer sur l'adresse de data qui est un entier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part void * write_buffer = NULL;
je passe en parametre le pointeur write_buffer dans une fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part write_buffer = data;
a l'interieur de cette fonction j'ai une ligne qui me retourne un pointeur de type void * , je voudrais que ce pointeur pointe sur l'adresse de la donnée initiale data donc, write_buffer donc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part block_list_write_buffer(head,write_buffer,size);
ci joins le code de cette fonction :
le probleme est que ptr_data contiens bien la valeur data mais son adresse change !
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 int block_list_write_buffer( struct block_list_head * head, void * buffer, unsigned int size ) { fprintf(stdout,"\n\n-- Write --"); if (check(head != NULL, "Argument head is NULL")&& check(buffer != NULL, "Argument buffer is NULL")&& check(size != 0, "Argument size = 0")) { void * ptr_data = NULL; unsigned int free_size = 0; ptr_data = block_list_write_begin(head,&free_size); fprintf(stdout,"\n Free Size = %d",free_size); if (size <= free_size) { fprintf(stdout,"\nP ptr_data : %p",ptr_data); // affiche adresse X ptr_data = buffer; fprintf(stdout,"\n ptr_data : %d",ptr_data); // Affiche la valeur Data fprintf(stdout,"\nP ptr_data : %p",ptr_data); // Affiche une valeur Y !! (d'ou le probleme) block_list_write_end(head,size); return 0; } return -1; } return -1; }
je bloque la dessus est ce qu'une ame charitable pourrais m'aider ?
merci d'avance !
Partager