HEAPCOLLECTOR

shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014 - 15 déc. 2009 à 14:44
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

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
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 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
17 déc. 2009 à 15:49
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
17 déc. 2009 à 10:55
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
16 déc. 2009 à 18:47
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 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
16 déc. 2009 à 16:57
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
troctsch Messages postés 6 Date d'inscription vendredi 4 décembre 2009 Statut Membre Dernière intervention 28 janvier 2011
15 déc. 2009 à 18:36
Pas de soucis! Bonne lecture alors :)
N'hesites pas a me faire part de ce que tu en penses!
Cordialement.
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
15 déc. 2009 à 16:42
merci pour tes explications, je n'avais pas remarqué les mains 1 2 et 3
j'ai l'air fin maintenant ^__^
je vais regarder ça de ce pas ;)
troctsch Messages postés 6 Date d'inscription vendredi 4 décembre 2009 Statut Membre Dernière intervention 28 janvier 2011
15 déc. 2009 à 16:20
Bonjour Shenron666.
Alors en ce qui concerne le main.cpp, c'est vrai ca peut sembler léger, mais plus sérieusement, des exemples d'utilisation sont enregistrés dans le projet en tant que main.cpp.1, main.cpp.2 et main.cpp.3.
Quant à l'utilité de HeapCollector face à smart_ptr ou bien auto_ptr, j'avoue clairement ne pas y avoir réfléchi car je ne connaissais pas ces outils avant que tu m'en parles. Sinon, n'hésites pas à télécharger la source et à lire le 3-doc/README qui t'expliquera davantage le fonctionnement de ma classe. Je pense que tu pourras voir si tu y trouves une utilité quelconque facz à un smart_ptr ou un auto_ptr, toi qui semble bien connaitre ces outils.
Cordialement.
shenron666 Messages postés 229 Date d'inscription dimanche 14 septembre 2003 Statut Membre Dernière intervention 20 août 2014
15 déc. 2009 à 14:44
wahoo super le "main" :

int main (int argc, char** argv)
{
return 0;
}

ça marche tout seul ton HEAPCOLLECTOR ?

plus sérieusement, un exemple d'utilisation serait le bienvenue, ça permet de se faire une idée sur l'utilité de la chose et de ne pas se prendre la tête à chercher comment ça marche / comment s'en servir

par exemple, quelle utilité face à des "boost::smart_ptr" ou des "std::auto_ptr" ?
Rejoignez-nous