2010-03-13 9 views
0

Je me demande pourquoi, après avoir exécuté le ./a.out au hasard, j'ai obtenu ce qui suit. Des idées de ce que je fais mal? Mercimémoire (fuites) après l'exécution

http://img710.imageshack.us/img710/8708/trasht.png http://img710.imageshack.us/img710/8708/trasht.png

http://img710.imageshack.us/img710/8708/trasht.png

+0

Double Libère peut être très délicat/difficile à suivre pour tous les programmes, mais futiles. Alors, méfiez-vous. – dirkgently

+0

Vous feriez mieux de coller votre code, bien que je ne sois pas sûr de qui aurait lu 1024 lignes de source :) –

+5

Une image de texte. C'est une première ... ou est-ce ... Évidemment, je n'ai pas encore vécu assez longtemps. –

Répondre

2

Comme l'erreur que vous avez probablement suggère une corruption

double libération () ou tas Edit: Soit vous êtes en libérant le même tampon Plus d'une fois ou vous écrivez des octets dans une zone de mémoire à laquelle vous ne devriez pas écrire. Ce dernier peut être causé par l'écriture dans le tampon après l'avoir libéré ou écrit en dehors des limites de la mémoire tampon. Peut-être Memcheck peut aider à localiser le problème.

compilez votre programme avec des informations de débogage cc -g et exécuter valgrind ./a.out

+0

donc c'est parce que je libère plus de fois que je le devais? – Mike

+0

oui, vous êtes. :) – vladr

+0

Il est également possible que vous écrivez en mémoire que vous n'êtes pas censé écrire. – Gabe