Débugueur Valgrind
Fuite mémoire
Parfois, des cellules mémoire ne sont plus accessibles. Par exemple, si on appelle la fonction f
suivante :
int f() {
char* p = malloc(3);
}
cela allouera 3 cases mémoires qui ne seront pas libérées.
Lecture de zones non allouées
Si on essaie d'accéder à une zone non allouée, on obtient généralement un Segmentation fault (core dumped)
comme avec :
void main() {
int* p = NULL;
printf("%d\n", *p);
}
Avec valgrind, on peut savoir où est l'erreur.
Utilisation
gcc -g main.c
valgrind ./a.out
valgrind -v --leak-check=summary ./a.out