Utilisation mémoire: top vs valgrind

Salut, j’ai failli poster dans Programmation mais il s’agit plutôt d’une question relative à top.
Préambule:
-top: liste les programmes en cours et les ressources utilisées.
-valgrind: permet de surveiller les accés mémoire d’un programme. Très pratique pour corriger les fuites mémoire d’un programme.

Lorsque que je crée du contenu dans un programme en C(création d’un tableau d’entiers), je vois mon programme occuper un peu plus de ram. Lorsque que je fais un free(), mon programme occupe toujours le même volume mémoire.
Si je fais la même chose sous valgrind, je ne constate aucune fuite mémoire. La totalité de la mémoire allouée et libérée avant la fin du programme.

Quelqu’un pourait m’expliquer pourquoi top ne semble pas cohérent?

Pour ceux qui veulent plus de détails.
Mon projet suit son cours. Dernièrement, j’ai fait un peu de ménage dans mon code C. J’utilise des pointeurs vers mes structures{int,float,char*} et j’ai trouvé plus pratique d’écrire des fonctions dédiées à l’initialisation (malloc) et à la libération (free) du contenu de ces pointeurs. Si je me plante pas, il s’agit de constructeurs/destructeurs?
J’ai écrit une fonction de test qui remplit ces structures avec du contenu aléatoire (pour es chaines de caractères). Je peux facilement créer un tableau contenant n pointeurs vers n structures.
D’après valgrind, ma gestion mémoire est bonne puisqu’il ne repère aucune fuite.

Je ferais plus confiance à Valgrid, Top te donne ce que l’OS a alloué a ton programme, s’il a assez de mémoire il ne va pas libéré de suite la mémoire non utilisé par le process.

Merci mimoza. Tu as raison, l’OS ne prend pas la peine de libérer la mémoire tout de suite si c’est négligeable.
Je viens de refaire un essai en occupant 12% de ma ram (240Mo), la libération a été immédiate.