benlustr
Messages postés32Date d'inscriptionlundi 10 avril 2006StatutMembreDernière intervention 5 juillet 2006
-
9 juin 2006 à 09:43
benlustr
Messages postés32Date d'inscriptionlundi 10 avril 2006StatutMembreDernière intervention 5 juillet 2006
-
9 juin 2006 à 12:01
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 :
cs_PoFMaN
Messages postés58Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention21 juin 2006 9 juin 2006 à 10:57
Salut,
le message 'violation de l'adresse......' pour moi ne veu pas dire que free() n'a pas désalloué, au contraire. A mon avis tu as cette erreur parce que tu essaye de retourner une adresse mémoire qui a été libérée (ca m'étonnerai mais j'ai jamais essayé), ou parce que tu essaye de faire quelque chose avec cette adresse une fois que tu l'as retournée.
Et moi non plus je vois pas à quoi ca sert de retourner une adresse mémoire qui a été libérée.
Et au passage je vois pas non plus lma différence entre p1 et p1_returned (a part le nom :) )
Vous n’avez pas trouvé la réponse que vous recherchez ?
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 9 juin 2006 à 11:05
Une fois sortie de ta fonction, ton pointeur ne vaut plus rien.
Pas étonnant que ton soft plante si tu essayes de travailler sur cette adresse retournée!