Bonjour à tous, c'est encore moi

Dans une fonction, j'ai deux pointeurs qui s'incrémentent dans une boucle. à la fin de la fonction, je libère les zones mémoires correspondantes que j'ai allouées avec malloc. Ensuite, je renvoie l'adresse qui correspond à l'une des zones mémoire. C'est au moment du return que j'ai un message du genre 'violation de l'adresse......'.
voici le code en gros :

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
 
float *p1, *p1_i, *p1returned, *p2, p2_i;
 
p1 = (float*)malloc(512*512*sizeof(float));     //pointeur que je vais incrémentrer
p1_i = p1;                                                       //Ici, je conserve l'adresse d'origine, pour désallouer
p1returned = p1;                                             //Ici, je garde l'adresse d'origine, celle que je vais retourner à la fin
 
p2 = (float*)malloc(512*512*sizeof(float));
p2_i = p2;
 
for(....)
{
p1++;
p2++;
}
 
free(p1_i);
free(p2_i);
 
return(p1_returned); //Ici, il s'agit bien de l'adresse qui a été renvoyée à l'origine par malloc.
voilà, si vous avez une idée, je suis preneur. Merci à vous !