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 type
Code : Sélectionner tout - Visualiser dans une fenêtre à part
void * write_buffer = NULL;
je le fais pointer sur l'adresse de data qui est un entier :

je passe en parametre le pointeur write_buffer dans une fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
block_list_write_buffer(head,write_buffer,size);
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.

ci joins le code de cette fonction :

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;
}
le probleme est que ptr_data contiens bien la valeur data mais son adresse change !
je bloque la dessus est ce qu'une ame charitable pourrais m'aider ?
merci d'avance !