2010-06-24 4 views
0

J'écris un programme en C qui lit un fichier texte et en analyse les données dans divers champs. Le fichier texte que je suis en train de lire est très grand (31 Mo) et quand je lance le programme sur un fichier texte qui a 41880 lignes d'entrée tout fonctionne bien. J'ai finalement besoin de lire des fichiers texte qui sont beaucoup plus gros que cela. Donc quand j'augmente les lignes à 41881 bien que j'obtienne une erreur de segmentation. Des idées?Erreur de segmentation lors de l'exécution de la boucle 41881 fois

+5

Sans la source de la partie qui se brise, il est pratiquement impossible de déterminer ce qui ne va pas. –

+4

31 Mo n'est pas si grand, donc je suppose que vous avez un bug, plutôt que de manquer de mémoire. Pouvez-vous envoyer votre code? –

+5

Désolé, ma clairvoyance n'est plus ce qu'elle était. Vous voulez fournir une partie du code qui a le problème? – Cogwheel

Répondre

2

Vous bousiller la mémoire quelque part le long du chemin et il est finalement vous frapper à la ligne 41881.

Si votre plate-forme est pris en charge, essayez d'exécuter sous Valgrind.

+1

ou juste sous gdb et faire un bt quand segfaults – ninjalj

+0

@ninjalj - c'est une chose très différente. gdb va vous montrer votre contexte au moment où le crash setfault se produit. Mais si le code qui détruit la mémoire ne déclenche pas immédiatement un crash (ce qui est malheureusement très courant), savoir où le crash s'est produit ne vous aidera peut-être pas à trouver le vrai bug. –

+0

règles valgrind! +! –

Questions connexes