Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1750 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Bug en release et pas en debug (Visual C++)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Bug en release et pas en debug (Visual C++)

n°790805
paskiki
Posté le 08-07-2004 à 21:31:03  profilanswer
 

Bonjour à tous.
 
Voila ... j'étais assez fier d'un truc que j'ai fait en c++. j'ai donc voulu voir ce que cela allait donné en "release", m'attendant inévitablement à des erreurs, particulierement de mémoire.
 
Apres un premier test, j'ai été surpris de voir que mon appli s'arretait en cours de route, sans signaler d'erreur. Apres avoir vaguement localié la zone d'arret, je modifie les parametres d'optimization, pour le mettre en "default". Et là, "enfine une erreur, une vraie, d'acces mémoire.
 
Me voilà donc avec mes "cout << "toto"" partout, pour essayer de tracer. ce n'est surement pas la meilleure méthode, mais c'est la seule qui m'est venue.
 
J'arrive donc à ces lignes là :
 

Code :
  1. while(fantaSource.getline(tampon,256))
  2. {
  3. cout << "dedans\n";
  4. Joueur temp = Tokenize(tampon);
  5. cout << "nom" << temp.nom;
  6. joueurVecteur.push_back(temp);
  7. cout << "apres le pushback";
  8. }


 
et
 

Code :
  1. Joueur SourceListe::Tokenize(char* p_ligneFichier)
  2. {
  3. char decompos[6][256];
  4. int i = 0;
  5. int j = 0;
  6. int k = 0;
  7. Joueur result;
  8. cout << "dans le tokenize\n";
  9. while((p_ligneFichier[i]!='\n') && (p_ligneFichier[i]!='\0'))
  10. {
  11. cout << i << " " << j << " " << k << " " << p_ligneFichier[i] <<"\n";
  12. if ((j>=7)||(k>=256))
  13. throw FormatError(); // Le fichier est mal formé
  14. if (p_ligneFichier[i] ==',')
  15. {
  16. decompos[j][k]='\0'; // l'info en cours est terminée
  17. j++; // on passe à la prochaine info
  18. k = 0;
  19. i++;
  20. }
  21. else
  22. {
  23. decompos[j][k]=p_ligneFichier[i];
  24. i++;
  25. k++;
  26. }
  27. }
  28. decompos[j][k]='\0';
  29. if (j!=6)
  30. throw FormatError(); // Le fichier est malformé
  31. cout << "au milieu tokenize\n";
  32. result.indice = decompos[0];
  33. result.nom = decompos[1];
  34. result.club = decompos[2];
  35. result.poste = decompos[3];
  36. result.valeur = decompos[4];
  37. result.dispo = decompos[5];
  38. result.proprio = decompos[6];
  39. cout << "avant le return\n";
  40. return result;
  41. }


Bref, là j'essaie de voir les différentes valeurs de i, j et k, puisque l'erreur semble apparaitre dans la boucle while de Tokenize.
"cout << i << " " << j << " " << k << " " << p_ligneFichier[i] <<"\n";"
 
Tokenize reçoit une ligne d'un fichier, la parcours et la décompose.
i désigne la position du caractere étudié dans la chaine fourni en argument. or, tout va bien jusqu'au 45ieme caractere ... puisqu'alors l'affichage m'indique que i est passé à 35, au lieun de 46. Il va sans dire que cela ne doit pas aider à faire fonctionner le zinzin ...
 
je suis repassé en debug, pour tracer, et ça passe bien le "46ieme caractere" ...
 
Une idée sur la raison du pourquoi du comment ?
 
PS : j'ai volontairement virer des constantes, et un peu "sali" le code, pour les phases de dubg du release ...

mood
Publicité
Posté le 08-07-2004 à 21:31:03  profilanswer
 

n°790806
Taz
bisounours-codeur
Posté le 08-07-2004 à 21:33:16  profilanswer
 

result.indice = decompos[0];  
 
 
tu vas ou là ?

n°790813
paskiki
Posté le 08-07-2004 à 21:54:33  profilanswer
 

Taz a écrit :

result.indice = decompos[0];  
 
 
tu vas ou là ?


 
Bah je stocke ainsi un char* dans un string
 
(ouais, pardon, tous les membres de la classe Joueur sont des string)

n°790832
Joel F
Real men use unique_ptr
Posté le 08-07-2004 à 22:29:14  profilanswer
 

Attention :
char[] != char*

n°790833
blackgodde​ss
vive le troll !
Posté le 08-07-2004 à 22:30:40  profilanswer
 

char decompos[6][256];
result.proprio = decompos[6];
=> tu peux pas écrire decompos[6]


---------------
-( BlackGoddess )-
n°791021
Taz
bisounours-codeur
Posté le 09-07-2004 à 00:08:26  profilanswer
 

mais dégager mois tout c'est char machin :o

n°791261
paskiki
Posté le 09-07-2004 à 10:42:56  profilanswer
 

Merci, je vais regarder tout ça :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] Bug en release et pas en debug (Visual C++)

 

Sujets relatifs
Lien Visual Basic et C++[Info] Visual Studio 2005 Express
Bug suivant la version de IE !!!Bug MFC concernant l'icone?
Visual C++ , en rajoutant des boutons l'exe se lance plus !Image avec visual c++ (MFC)
[VB] Webbrowser: bug aléatoireversion 4.9.8.10 de Dev C++ béta release (9 juin 2004)
Menu et sous-menu dynamique tjs..... en Visual C++ tjs[JAVA] Inner class et accès aux membres protected --> compiler bug ?
Plus de sujets relatifs à : [C++] Bug en release et pas en debug (Visual C++)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR