Détection de fausses erreurs avec open

Détection de fausses erreurs avec open

by Thibault Jean-Baptiste Golaz -
Number of replies: 5

Bonsoir, lorsque je veux tester mon bouton open je rencontre un problème, la lecture du premier fichier que j'ouvre est correcte mais lorsque je veux ouvrir un nouveau fichier le programme  détecte des erreurs complétement absurde comme "impossible to have too little capacity 73 < 1000" alors qu'aucun noeud a une capacité aussi faible.

Mon bouton new ainsi que mon bouton open appellent une fonction qui vident les vector de Noeud et de Liens et qui supprime et donne l'adresse 0 à tous les pointeurs.

Je ne comprends pas d'où pourrait venir cette erreur ni comment la corriger.

Auriez-vous une idée de ce qu'il pourrait se passer ? Ou est ce que quelqu'un a déjà rencontré ce problème et a su le résoudre ?

Merci

In reply to Thibault Jean-Baptiste Golaz

Re: Détection de fausses erreurs avec open

by Bassam El Rawas -

Salut, 

Quelq'un a déjà rencontré ce problème et a posé la question sur le forum mais j'arrive plus à retrouver le post 

J'imagine que tu reprend la fonction décodage_ligne pour la lecture, si c'est le cas oublie pas de remettre les variables static a leur état initial (les variables static memorisent leur état d'un appel a l'autre), car a la fin du 1er usage de decodage_ligne tes variables static n'ont pas les mêmes valeurs qu'elles avaient au début. Du coup tout a la fin réinitialise le compteur a 0, état a nbh, etc 

In reply to Bassam El Rawas

Re: Détection de fausses erreurs avec open

by Thibault Jean-Baptiste Golaz -
Du coup, après avoir réinitialisé mes variables static, vérifier mes fonctions de suppression de la ville qui me semblent correctes et après avoir essayé de rajouter fichier.close() à la fin de la lecture le problème persiste.
Les erreurs détectées ne sont pas toujours les mêmes pour des fichiers identiques, et sont totalement aléatoires
exemple en ouvrant d'abord success.txt suivi de s05.txt: Impossible to have a too much capacity: 1768710959 > 1000000

Voila, je ne comprends vraiment pas d'ou peut venir le problème.
Je tiens à préciser que quand je lance le programme sans fichier je peux une première fois ouvrir un fichier avec succès, ce n'est que le 2eme qui pose problème.

Merci

In reply to Thibault Jean-Baptiste Golaz

Re: Détection de fausses erreurs avec open

by Ronan Boulic -

cherchez bien ; dans votre cas je ne vois pas d'autre piste que des variables non-ré-initialisée ou mal initialisées ou pas initialisées.

In reply to Ronan Boulic

Re: Détection de fausses erreurs avec open

by Thibault Jean-Baptiste Golaz -

Merci pour votre réponse,

Après de longues recherches avec des cout j'ai remarqué que le problème est qu'à chaque fois que je crée une nouvelle ville celle-ci contient 3 noeuds de plus qu'il ne devrait pas y avoir au début,

Voilà une capture d'écran avec ces cout, on s'aperçoit que les noeuds 1, 2 et 3 ne devraient pas être là mais que les 6 d'après sont corrects. (Le cout affiche d'abord l'uid et ensuite nbp)

Peut-être qu'avec ça vous auriez une idée de ce qu'il se passe ? Car j'ai essayé énormément d'alternatives mais rien ne fonctionne

Attachment Capture du 2020-04-30 12-46-17.png
In reply to Thibault Jean-Baptiste Golaz

Re: Détection de fausses erreurs avec open

by Thibault Jean-Baptiste Golaz -

Problème résolu.

Les paramètres de ma fonction DeleteVille n'étaient pas passés par références -> une copie des anciens noeuds avec des valeurs aléatoires restaient en mémoires