On peut, en C comme en C++, ne pas explicitement gérer la mémoire (c'est la plaie) en utilisant un ramasse-miettes.
Il y évidemment le ramasse-miettes conservatif de Boehm, qui est présent dans toutes les distributions récentes de linux comme libgc.so ou libgc.a (et #include <gc.h>). Dans son usage le plus simple, on remplace malloc par GC_malloc ou new par new(GC) et on peut oublier les free ou delete - l'application va libérer (presque toute) la mémoire inutile pour la réutiliser.
Il y a d'autres ramasse-miettes (notamment précis, ie non conservatifs). Ils sont plus désagréables d'utilisation mais permettent aussi de coder en C ou C++ [v](j'ai même écrit un tel ramasse-miettes, Qish, en LGPL, sur ma page)[/v].
Je veux dire par là que, même dans une application codée en C ou C++, on peut ne pas gérer la mémoire à la main (en mettant, et c'est horrible, les free ou delete à la main dans le code).
Dans un noyau, les choses sont un peu différentes, car le noyau est tenu de gérer la mémoire (y compris la sienne) mais pourrait utiliser un ramasse-miettes pour ça.
Le comptage de références, chers aux programmeurs C++, est une (très mauvaise) technique de ramassage de miettes (ou garbage collector, ou glâneur de cellules).
L'un des nombreux intérêts du langage Ocaml (de son implantation dans son compilateur) est son ramasse-miettes très efficace (souvent plus efficace que le malloc & free de C).
----
Basile STARYNKEVITCH
Membre de l'
APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!
Projet logiciel libre:
RefPerSys
Poste le Saturday 11 March 2006 21:42:18