Djoobstil
Messages postés38Date d'inscriptiondimanche 10 août 2003StatutMembreDernière intervention22 mars 2005
-
9 juil. 2004 à 13:48
xarier
Messages postés688Date d'inscriptionjeudi 26 décembre 2002StatutMembreDernière intervention19 mai 2005
-
12 juil. 2004 à 22:56
Bonjour,
J'ai fait un programme, plutôt complexe en C.
De temps en temps ce prog me retourne des choses bisardes.
Par exemple, j'ai une variable qui doit me retourner un pseudo, celui ci me retourne:
"ed: @ABAck)"
On m'a parlé de buffer over read, une lecture d'une autre variable alors qu'elle ne le devrait pas.
gillou1664
Messages postés20Date d'inscriptionvendredi 25 juillet 2003StatutMembreDernière intervention25 mars 2009 9 juil. 2004 à 15:36
Si tu es bien sur d'avoir correctement déclaré, initialisé, et affecté ta variable avec ton pseudo il y a des chances pour que ce soit bien ça. Dans ton cas ce n'est pas je pense la lecture d'une autre variable qui pose problème mais plutôt l'écriture d'une variable sur la tienne (d'où overhead=débordement).
Si tu veux voir d'où vient ce problème : regarde pendant l'execution la mémoire à l'adresse de ta variable lue. Qu'y a-t-il avant? Est-ce que ça ne serait pas un autre de tes char* ? Dans ce cas va voir partout où tu lui affecte des caractères et verifie bien que tu ne lui en met pas trop (sinon, forcément, ben.... ca déborde et, pas de bol, sur la variable d'à coté). Si tu n'arrive pas à identifier le problème comme ça tu peux toujours utiliser la méthode bourrin : Tu met des breakpoints un peu partout dans ton code et tu regarde l'évolution de ta variable. Quand tu as identifié le code responsable, tu sors le lance-flammes et tu te fait plaisir.
----------------------------------
Mangez des gnous!
gillou1664
Messages postés20Date d'inscriptionvendredi 25 juillet 2003StatutMembreDernière intervention25 mars 2009 12 juil. 2004 à 08:24
C'est possible et c'est une erreur assez classique mais le problème maintenant pour toi reste à savoir si c'est bien ça.
Essaie d'utiliser les methodes que j'ai indiqué déjà.