troctsch
Messages postés6Date d'inscriptionvendredi 4 décembre 2009StatutMembreDernière intervention28 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és229Date d'inscriptiondimanche 14 septembre 2003StatutMembreDernière intervention20 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és6Date d'inscriptionvendredi 4 décembre 2009StatutMembreDernière intervention28 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és6Date d'inscriptionvendredi 4 décembre 2009StatutMembreDernière intervention28 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és229Date d'inscriptiondimanche 14 septembre 2003StatutMembreDernière intervention20 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és6Date d'inscriptionvendredi 4 décembre 2009StatutMembreDernière intervention28 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és229Date d'inscriptiondimanche 14 septembre 2003StatutMembreDernière intervention20 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és6Date d'inscriptionvendredi 4 décembre 2009StatutMembreDernière intervention28 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és229Date d'inscriptiondimanche 14 septembre 2003StatutMembreDernière intervention20 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" ?
17 déc. 2009 à 15:57
Ca tombe bien j'ai un bouquin la dessus.
Merci de ta coopération très constructive.
Je vais mer renseigner sur le sujet.
17 déc. 2009 à 15:49
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
17 déc. 2009 à 10:55
16 déc. 2009 à 18:47
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.
16 déc. 2009 à 16:57
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
15 déc. 2009 à 18:36
N'hesites pas a me faire part de ce que tu en penses!
Cordialement.
15 déc. 2009 à 16:42
j'ai l'air fin maintenant ^__^
je vais regarder ça de ce pas ;)
15 déc. 2009 à 16:20
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.
15 déc. 2009 à 14:44
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" ?