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