C++ et GC ? - C++ - Programmation
Marsh Posté le 01-05-2005 à 15:28:07
blackgoddess a écrit : Bonjour, |
L'interface proposé n'est guère convaincante ...
Citation : pour vous, est-ce uniquement une solution de facilité, ou cela peut-il avoir aussi des avantages comme l'ecriture de code plus robuste avec moins de prises de tete ? |
Je ne pense pas que ce soit une solution de facilité, on peut arriver à écrire du code ou on se noie complètement dans la gestion de la mémoire, et ça peut etre bien pratique.
boost::shared_ptr est une solution, mais elle ne tient pas compte des références cycliques qui peuvent intervenir. Heureusement, boost::weak_ptr arrive à la rescousse.
Exemple :
Code :
|
L'avantage de cette solution par rapport au GC, c'est qu'on peut savoir quand est appelé le destructeur.
peut etre que d'autres peuvent parler de __gc que je ne connais guère et qui à l'air bien merdique.
Marsh Posté le 01-05-2005 à 15:51:09
moi je manque un peu de recul, qu'est-ce que pourrait apporter un gc par rapport à une utilisation de boost::shared_ptr/boost::weak_ptr ? à première vue je vois plustôt des inconvénients mais je manque peut-être l'essentiel ?
Marsh Posté le 01-05-2005 à 15:57:28
ça demande de ne pas se vautrer dans la distribution des roles boost::shared_ptr et boost::weak_ptr ...
Marsh Posté le 01-05-2005 à 17:38:18
sigmatador a écrit : p-e pas si merdique au vu des projets qui l'utilise (meme si je ne suis pas fan du concept de garbage collector) |
Tiens, j'ai vu que Mozilla l'utilisait. Bizarre, le 1.7.5 me bouffe toute ma mémoire en 4-5 jours
Marsh Posté le 01-05-2005 à 18:18:05
mozilla c'est de la merde. ça leak, ça fragmente, ça leak serveur X, ça pue.
Pour le GC, c'est cool, sauf qu'il sens mauvais le C ou le Java, bref il appelle pas forcément ton destructeur ...
Marsh Posté le 01-05-2005 à 18:44:07
ReplyMarsh Posté le 01-05-2005 à 21:36:17
Y'a pas que la gestion auto de la durée de vie des objets dans un GC. Ce que j'aimerai bien tester, c'est la différence du coût de l'allocation des objets au fil de l'exécution. Je pense que l'allocation d'un GC doit être plus performante, grâce à moins de fragmentation. Il faut se gérer des pool en C++ pour arriver à quelque chose d'équivalent je suppose. Moi j'aimerai bien des smart ptr qui en interne gèrent un pool spécifique à chaque type d'objet alloué.
Marsh Posté le 02-05-2005 à 00:03:24
de toute façon, les GC performants ne sauront jamais appeler les destructeurs correctement
Sinon, bohem à un très bon usage qui ne pourri pas les perfs : c'est un detecteur de memory leak a utiliser dans du code de debug. Je crois que c'est comme ça que mozilla l'utilise
Marsh Posté le 02-05-2005 à 00:07:05
Si tu veux du C objet avec un GC, il faut faire de l'Objective C.
Marsh Posté le 02-05-2005 à 14:18:25
Pour __gc c'est managed C++, .Net quoi. C'est comme ça que tu déclares (déclarais) ta classe / variable comme étant un type managé. En lui même c'est pas merdique, c'est réellement garbage collecté. Ce qui est merdique c'est la syntaxe qui est lourde, plus l'ambiguite à savoir si un objet est managé ou non (les 2 utilisent new, faut aller lire le .h pour trouver ou non le __gc et être fixé).
Dans C++ CLI ils ont revu ça, en distinguant les objets natifs (new) des managés (gcnew).
Marsh Posté le 02-05-2005 à 14:45:44
Taz a écrit : euh le boehm, je sais pas s'il compacte alors ... |
les GCs conservatifs ne compactent *jamais*, c'est exactement pour ça qu'on les dit conservatifs.
Marsh Posté le 02-05-2005 à 15:09:10
voui, me suis mal exprimé. Je voulais être ironiqe :tacle à la gorge:
Marsh Posté le 03-05-2005 à 11:30:12
Vous auriez d'autres GC en tête utilisables en C++ ? pour pouvoir les comparer entre eux
Merci
Marsh Posté le 01-05-2005 à 02:51:18
Bonjour,

que pensez-vous de l'utilisation d'un garbage collector en C++ ?
j'ai lu un peu de doc sur celui ci : http://www.hpl.hp.com/personal/Hans_Boehm/gc/
apparement, il serait assez compliqué de le faire interagir avec la stl par exemple ...
pour vous, est-ce uniquement une solution de facilité, ou cela peut-il avoir aussi des avantages comme l'ecriture de code plus robuste avec moins de prises de tete ?
on peut peut-être aussi le comparer à l'utilisation de shared_ptr et consors de boost ?
Merci pour vos réponses
---------------
-( BlackGoddess )-