[C++] plantage incomprehansible

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
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
 
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   Statut Contributeur Dernière intervention   1 299
 
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   Statut Membre Dernière intervention   74
 
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   Statut Contributeur Dernière intervention   1 299
 
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