ah ok, c'est pour ça!
en fait, en relisant ton implémentation, je ne suis pas bien sûr de comprendre: tu repères les objets 'racine' en utilisant des pointeurs intelligents (smart pointers). Ca me pose un problème conceptuel, outre le fait que ces pointeurs n'ont d'intelligent que le nom:
- ces pointeurs ne permettent pas de repérer les références cycliques
- si ils étaient vraiment intelligent et qu'ils n'avaient pas le problème précédent, alors ils suffiraient à eux seuls à faire un GC.
donc le mark-sweep en lui même n'est pas compliqué, c'est plutôt le reste, à savoir:
- trouver les objets racine
- faire le lien entre un objet les autres objets qu'il référence.
Pour le point 1, je n'ai pas compris comment tu comptes faire
Pour le point 2, tout repose sur l'implémentation de la méthode `gcIterate()' qui va devoir être redéfinie (correctement) par chaque classe. La problématique est donc très différente avec le GC de Hans Boehm , ce dernier étant moins contraignant pour le programmeur. Mais comme le programmeur c'est toi, essayes pour voir!
[^] # Re: et ça compile ?
Posté par left . En réponse au message garbage colector C++ ?. Évalué à 2.
en fait, en relisant ton implémentation, je ne suis pas bien sûr de comprendre: tu repères les objets 'racine' en utilisant des pointeurs intelligents (smart pointers). Ca me pose un problème conceptuel, outre le fait que ces pointeurs n'ont d'intelligent que le nom:
- ces pointeurs ne permettent pas de repérer les références cycliques
- si ils étaient vraiment intelligent et qu'ils n'avaient pas le problème précédent, alors ils suffiraient à eux seuls à faire un GC.
donc le mark-sweep en lui même n'est pas compliqué, c'est plutôt le reste, à savoir:
- trouver les objets racine
- faire le lien entre un objet les autres objets qu'il référence.
Pour le point 1, je n'ai pas compris comment tu comptes faire
Pour le point 2, tout repose sur l'implémentation de la méthode `gcIterate()' qui va devoir être redéfinie (correctement) par chaque classe. La problématique est donc très différente avec le GC de Hans Boehm , ce dernier étant moins contraignant pour le programmeur. Mais comme le programmeur c'est toi, essayes pour voir!