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 :
voilà, si vous avez une idée, je suis preneur. Merci à vous !
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.
Partager