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