La mise en œuvre sous-jacente de free
diffère d'une plateforme à l'autre, mais ce que vous observez est très probablement dû à la présence de paresseux l'allocation/désallocation de mémoire. Votre système d'exploitation (ou les routines de gestion de la mémoire) est conscient de la mémoire que vous venez de libérer, mais comme il est probable que votre programme demande à nouveau de la mémoire, il ne prend pas la peine de mettre cette mémoire à la disposition d'autres processus jusqu'à ce que d'autres processus en fassent la demande. Par conséquent, le gestionnaire de tâches montre que l'utilisation de la mémoire de votre programme ne diminue pas, malgré les appels à la fonction free.
Si votre programme libère de la mémoire et en demande ensuite davantage, les routines de gestion de la mémoire sous-jacentes ne doivent pas vous restituer la même mémoire que celle que vous avez libérée. La combinaison de blocs libres est appelée coalescence Il s'agit d'une opération coûteuse, qui sera donc reportée au dernier moment, voire pas du tout si possible.
Pour le prouver, vous pouvez lancer un autre programme et lui demander de solliciter une grande quantité de mémoire. Si votre programme initial a correctement libéré la mémoire, son utilisation de la mémoire diminuera dès que le nouveau programme demandera de la mémoire.