HEAPCOLLECTOR

Messages postés
231
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
- - Dernière réponse : troctsch
Messages postés
6
Date d'inscription
vendredi 4 décembre 2009
Statut
Membre
Dernière intervention
28 janvier 2011
- 17 déc. 2009 à 15:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50971-heapcollector

Afficher la suite 
troctsch
Messages postés
6
Date d'inscription
vendredi 4 décembre 2009
Statut
Membre
Dernière intervention
28 janvier 2011
-
Ah, les design-patterns!
Ca tombe bien j'ai un bouquin la dessus.
Merci de ta coopération très constructive.
Je vais mer renseigner sur le sujet.
shenron666
Messages postés
231
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
-
une chose que j'avais oublié, ta classe n'est sensée être instanciée qu'une seule fois n'est ce pas ?
auquel cas, il serait intéressant et logique qu'elle soit basée sur un singleton

je t'invite à te renseigner sur ce type particulier de classe

bon courage ;)

sinon je trouve que ta classe pourrait avoir une utilité si elle était couplée à un système de "pointeur intelligent" (smart_ptr) qui ferait lui même appel à ta classe lors des allocations, désallocations et copies de pointeurs
troctsch
Messages postés
6
Date d'inscription
vendredi 4 décembre 2009
Statut
Membre
Dernière intervention
28 janvier 2011
-
Je remanie complètement cette source. Je vous tiendrai au courant des évolutions dans un avenir proche.
troctsch
Messages postés
6
Date d'inscription
vendredi 4 décembre 2009
Statut
Membre
Dernière intervention
28 janvier 2011
-
Merci pour ton avis Shenron666.
Alors pour reprendre point par point ce que tu me reproche et tenter de t'éclairer sur ce que j'ai voulu obtenir je te repondrai ceci.

1- : C'est vrai que new et delete sont plus "propre" d'un point de vue conception c++. Il est prevu que j'utilise ces operateurs plutot que m/calloc () et free (). De plus tu as raison, comme je libere des objets alloués, il est possible que je doivent appeller implicitement un destructeur ce qui necessite l'emploi de delete ou de delete [] ce qui oblige l'utilisation de new et new []. Merci pour cette precision.

2- : C'est vrai je ne fais pas d'allocation de classe. Je vais mettre a jour mon code et fournir un autre fichier d'exemple ce soir avec l'utilisation de new et delete.

3- : Sans utiliser de template, je ne peux en aucun cas faire d'allocation, tout du moins pas sur un type complexe comme une classe qui exigerait l'appel d'un constructeur. Et ce n'est pas ce que j'ai voulu faire de toute maniere. new le fais tres bien! :)

Pour conclure, ce que j'ai voulu programmer c'est un outil qui rammasse tout ce qu'on fait dans un programme et liberer ca tout seul si on ne s'occupe plus de ce qu'on stocke. Cette classe est concue pour n'etre instanciée qu'une seule fois dans un programme et stocker/trier tout ce qu'elle peut stocker grace aux tags. Pour l'avenir je vais m'en servir.
Merci d'avoir passé du temps a lire mon code apparemment compliqué ;)
Je vais le mettre a jour et si tu as le temps, n'hesites pas a me reprocher d'autre petites choses qui me permettront de l'ameliorer!
Cordialement.
shenron666
Messages postés
231
Date d'inscription
dimanche 14 septembre 2003
Statut
Membre
Dernière intervention
20 août 2014
-
bon, tout d'abord pour calmer le jeu, je précise que ceci n'est que mon avis
honnêtement tu as perdu ton temps dans la conception d'une classe d'une relative complexité et qui apporte beaucoup de lourdeur supplémentaire

concernant les incohérences :
- qui dit classe dit C++, on n'utilise pas malloc et free en C++ mais new, new[], delete et delete[]
- aucun de tes exemples ne fait d'allocation de classe
- la classe CHeapCollector ne s'occupe pas des allocations par contre elle s'occupe des désallocations