Avec quel système d'exploitation ? Windows ? Unix ? DOS ? et quelle version de ces systèmes ?
Il y a quatre groupes de Windows :
A. Windows 3, 3.1
B. Windows 95, 98, 98 SE, Me
C. Windows NT, 2000, 2003, XP, Vista
D. Windows CE
Chacun à une stratégie d'allocation et de libération mémoire différente.
S'il n'y a pas de plantage, s'il n'y a pas de mémoire vérouillée, si le programme sort proprement, alors tous ces Windows libérent d'eux-même la mémoire allouée (DOS aussi).
La situation est différente en cas de plantage. Seuls les Windows du groupe C sont capable de libérer leur mémoire (sauf si elle est vérouillée).
D'une manière générale, il est recommandé de libérer la mémoire allouée.
Attention, une erreur de débutant très fréquente consiste à libérer plusieurs fois le même espace de mémoire. Cela fait planter l'application. L'erreur se produit souvent quand le programmeur se croit tranquile car avant de libérer la mémoire, il teste si le pointeur est nul ou non, mais il ne sait pas ou ne fait pas attention au fait que l'instruction free() ne remet pas le pointeur à nul, d'où d'autres libérations plus tard, qui, elles, plantent.