• [^] # Re: concrètement ?

    Posté par . En réponse au journal La mémoire ? On s'en fout !. Évalué à 3.

    > relire la référence ( http://ccs.ucsd.edu/c/lib_over.html#program%20termination(...(...))

    Ca n'a rien a voir. La recuperation de la mémoire ne depend pas du runtime du C mais du noyau. Quand un processus est créé par le noyau il créer un nouvel espace d'adressage pour le processus, appel le point d'entrer du programme via le loader (le point d'entré n'est pas le main en réalité y'a du code avant) qui lui même appelera main() si tu as un programme en C.

    De même quand ton processus est detruit le tu sors du main(), il y a encore du code qui s'execute dont tu n'as pas connaissance et enfin l'ordre est donné au noyau de détruire le processus et au passage son espace d'adressage.

    Tout les OS "modernes" courant reposent plus ou moins sur ce principe. Et tout le support est fournit pas le processeur pour y arriver facilement. Le fait que ton programme ou ton runtime C libere la mémoire que lui a attribue le noyau n'a rien a voir, ce sont deux concepts différents (cf dans beaucoup d'OS le tas ne peut que grossir même si tu free() toute ta mémoire...)

    Donc pour trouver un système qui ne libère pas la mémoire il faut au choix
    - trouver un noyau avec un VM completement buggé (mais ca devient grave !)
    - peut etre chercher du cote des systemes pour les processeurs sans MMU
    - avec MMU dans l'embarqué mais meme la ca m'étonnerait
    - En regardant du cote de windows 9x et OS 7..8..9 on doit pouvoir trouver des conditions dans lesquels la mémoire n'est pas libérée mais de toute facon on peut faire a peu pres n'importe quoi :-)
    http://developer.apple.com/documentation/mac/Memory/Memory-2.html(...) C'est rigolo de voir l'état de la gestion mémoire d'OS 7