URL: https://linuxfr.org/forums/programmation-c/posts/garbage-colector-c Title: garbage colector C++ ? Authors: Mildred Date: 2006年09月26日T09:55:45+02:00 Tags: Score: 0 Bonjour, J'ai un projet, et après avoir essyé plusieurs langages (C et D surtout) je pense utiliser C++, surtout car je pense convertir mon projet perso en projet d'études (IUT) et que le langage est imposé. De plus, je connais mal C++, C n'est pas pratique et D n'est pas assez portable. Mon projet : in langage de programmation inspiré d'une syntaxe List/Scheme (que je n'ai jamais utilisés :). Ce langage doit disposer d'un garbage collector pour libérer la mémoire, mais C et C++ ne le permettent pas facilement. Bien sûr, il y a le Bohem garbage collector 1. Le problème je trouve, c'est que ce n'est pas excessivement portable même si il doit pouvoir se trouver un peu partout. De plus, il est conservatif, et peut interprêter n'importe quoi comme un pointeur. Alors j'ai décidé de créer un petit garbage collector en C++ directement. J'ai déjà écrit un peu de code et je ne sais pas trop ce que ça vaut, niveau performances, bugs, fiabilité ... Je pensait me lancer dans quelque chose de compliqué mais cela ne semble pas si compliqué en fait. Ma méthode : une classe Object qui sera dérivée par les objets C++ collectables et devant redéfinir une méthode virtuelle permettant de parcourir les références pour l'algo mark&sweep. De plus, pour référencer les références racines sur la pile, un "smart pointer" est utilisé. J'utilise aussi les smart pointers pour gérer une méthode simplez de comptage de référence en utilisant des poids (un objet à un poids et chaque référence sur cet objet dispose d'une partie du poids2. Si on duplique la référence, le poids de la référence est partagé pour alimenter la copie mais le poids total ne change que lorsqu'une référence disparaît) Qu'en pensez-vous ? Vais-je droit dans le mur ...? Cela me paraît trop simple pour que ce soit si facile. 1 [http://www.hpl.hp.com/personal/Hans_Boehm/gc/](http://www.hpl.hp.com/personal/Hans_Boehm/gc/) 2 [http://en.wikipedia.org/wiki/Reference_counting#Weighted_ref(...)](http://en.wikipedia.org/wiki/Reference_counting#Weighted_reference_counting)