Buffer over read ?

Djoobstil Messages postés 38 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 22 mars 2005 - 9 juil. 2004 à 13:48
xarier Messages postés 688 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 19 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.

-Comment je peux cerner la variable qui bug ?

-Comment pourais-je resoudre ce probleme ?

merci.
Cordialement, Djoobstil

4 réponses

gillou1664 Messages postés 20 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 25 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!
0
Djoobstil Messages postés 38 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 22 mars 2005
10 juil. 2004 à 00:15
Donc j'aurais initialisé une variable avec une taille trop petite pour ce que je veux mettre dedans et sa déborderai sur la variable du pseudo ?

Cordialement, Djoobstil
0
gillou1664 Messages postés 20 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 25 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à.

-------------------------------
Mangez des gnous!
0
xarier Messages postés 688 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 19 mai 2005
12 juil. 2004 à 22:56
Effectivement gillou1664 moi aussi j'avait le meme prob et ca venais d'un char * qui ecrivé sur mes variable :)

Bonne chance Djoobstil

Life is Short 8-)
0
Rejoignez-nous