saturne_1606
Messages postés29Date d'inscriptionmardi 23 mars 2004StatutMembreDernière intervention23 juin 2006
-
22 juin 2006 à 20:26
saturne_1606
Messages postés29Date d'inscriptionmardi 23 mars 2004StatutMembreDernière intervention23 juin 2006
-
23 juin 2006 à 23:59
Boujour à toutes et à tous!
Je me permet de vous écrire parce que je suis face à un problème que je n'arrive pas à résoudre seul.
Voilà, j'alloue un tableau dynamique de "char". Lorsque je dois libé rer ce tableau avec "free", le
programme plante littéralement.
J'ai vérifié la valeur du pointeur vers la zone mémoire alloué, et il ne change pas entre sa création et
son effacement, donc je ne comprend pas du tout d'où peut venir un pareil problème.
J'aimerai que vous m'éclairer sur ce problème et éventuellement me dire quels sont les différents problèmes
que je pourrais rencontrer avec "free".
Un bout de mon code:
u8* pixel_data_line = NULL;
pixel_data_line = (u8*)memalign(16, nb_octet_a_lire);
printf("pixeldataline avant : %p\n", pixel_data_line);
...//Traitement
printf("pixeldataline apres : %p\n", pixel_data_line);
free(pixel_data_line); // <-------------------------------A CETTE LIGNE LE PROG PLANTE
saturne_1606
Messages postés29Date d'inscriptionmardi 23 mars 2004StatutMembreDernière intervention23 juin 2006 23 juin 2006 à 23:59
Bon, finalement après une longue recherche, j'ai enfin trouvé la solution moi même .
En fait, l'erreur est effectivement dans les traitements, mais à ma grande surprise, n'a aucun rapport avec "pixel_data_line".
J'ai fait quelques calculs, et il s'avère que j'écrivais en dehors du tableau dynamique "texture_info->data8".
Merci à ceux qui ont bien voulu m'aider et longue vie au forum de cppfrance
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 22 juin 2006 à 22:25
Pardon je connaissais pas cette fonction.
Le problème vient donc certainement de ton traitement:
-modifies-tu pixel_data_line? (il ne faut pas)
-fais attention a ne pas écrire en dehors de la mémoire allouée
saturne_1606
Messages postés29Date d'inscriptionmardi 23 mars 2004StatutMembreDernière intervention23 juin 2006 22 juin 2006 à 23:22
Je me suis dis la même chose; que le problème vient du traitement. Pour ce qui est de pixel_data_line, j'ai vérifié le pointeur et il reste le même, il reste donc la possibilité que mon traitement écrit en dehors de la zone allouée, cependant, je ne vois pas l'erreur.