heureusement qu´il n´y a pas qu´à l´arrêt de l´ordinateur que la mémoire se libère. C´est le cas aussi à chaque fois qu´une application, un process, un thread, ... prend fin.
En fait, c´est un peu plus compliqué que celà mais en gros, c´est celà.
Pour aller plus loin, les programmeurs diront que celà dépend du type de variables utilisées, locales, globales, ...
Mais pour faire court, on part du principe qu´à chaque fois qu´un programme se termine, il libère la mémoire qu´il utilisait.
La mémoire en RAM (Random Access Memory) étant volatile, elle est également libérée à l´arrêt du PC.