[C++] plantage incomprehansible

Fermé
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 5 janv. 2005 à 10:59
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 6 janv. 2005 à 01:13
Bonjour.
J'ai fait un programme en C++ (160 ligne, donc je le met pas ici) qui plante juste à la fin.
schématiquement :
int main()
{
         a+b;
         fclose(fs); derniere commande exécuter sans problème
         return 0;
}

en somme la dernière commande avant le return est exécuter correctement, puis XP me dit plantage envoie de rapport etc...
j'utilise DevCpp4.9.8.0 pour compiler (gcc 3. x il me semble)
Si qqun a une idée.
Merci

Salutation !
Char Snipeur
A voir également:

4 réponses

Utilisateur anonyme
5 janv. 2005 à 13:02
Bonjour,

il n'y a guère d'éléments dans ton message qui permettent de découvrir la source de l'erreur.
Ne faudrait-il pas mieux débugger ton programme?
Comment es-tu sur que l'instruction avant le "return 0" est exécutée correctement? Pour le savoir, il faudrait récupérer la valeur de retour de la fonction fclose(), ce qui n'apparait pas dans les lignes de codes que tu proposes.

a+
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
5 janv. 2005 à 14:18
ik. J'ai trop simplifier...
je l'ai vérifier en ajoutant des printf, etc... et en utilisant le debugueur de DevCpp (qui d'ailleur est bien bugger lui) qui fonctionne jusque la, puis arriver sur "return 0" il plante : il ne veut plus avancer pas à pas, et même DevCpp plante (donc reboot du prog)
J'ai reussi (en partie) à résoudre ce problème, il vien d'un dépassement de tableau. Dans le programme j'utilise un vector déclarer à une taille N, et j'utilise la N+1 valeur.
Se qui est étonnant c'est qu'avec une taille de vector de 2e5 tout ce passe bien, et avec une taille 1e5 ça plante...
Autre fait étrange, malgré le dépassement le programme fait tout, sauf la fermeture. A priori, d'après ce que j'ai pu voir une fois avec le débugeur, il plante lors de la destruction de certaines variable.

Salutation !
Char Snipeur
0
grdscarabee Messages postés 134 Date d'inscription mercredi 24 juillet 2002 Statut Membre Dernière intervention 7 août 2005 74
5 janv. 2005 à 18:02
Salut,

Personnellement je pense que tu as pourri ta mémoire....et le prgramme ne plante pas avant de rendre la main car il ne s'en est pas rendu compte mais Xp lui le sait ;)

Petit conseil, vérifies que tu n'as pas libérer deux fois le même pointeur ou alors que tu n'as pas modifié un morceau de mémoire qui ne t'appartenait pas...

GrdScarabe

Learn with the best, teach the others
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
6 janv. 2005 à 01:13
OK ! Merci grdscarabee. Tu doit avoir raison, ça me parait etre une bonne explication . Le problème venait d'un depassement de tableau (ici vector) Je n'utilise pas les pointeur justement pour eviter de faire ce genre d'oublie. c Gcc qui gere lui meme les création et destruction.

Salutation !
Char Snipeur
0