begin process at 2012 02 11 10:54:02
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > HEAPCOLLECTOR

HEAPCOLLECTOR


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :tas, heap, HeapCollector, classe, linux Niveau :Initié Date de création :13/12/2009 Date de mise à jour :16/12/2009 14:07:26 Vu / téléchargé :1 507 / 69

Auteur : troctsch

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Bonjour. Je vous propose maintenant une classe qui s'occupera de gerer vos allocations dynamiques dans votre programme. Toutes les informations dont vous aurez besoin se trouvent dans le README. Bonne lecture. Toutes suggestions ou critiques constructives sont les bienvenues.
Ah oui...ca a été fait sous vim et compilé/débuggé avec gdb.



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   HeapCollector
    •   0-header
    •   1-source
    • 2-ressource
    •   3-doc
      • READMETélécharger ce fichier [Réservé aux membres club]12 819 octets
    •   4-debug
      • 0-executable
      • 1-dynamic
    •   5-release
      • 0-executable
      • 1-dynamic
    • MakefileTélécharger ce fichier [Réservé aux membres club]1 602 octets

Télécharger le zip


 Historique

14 décembre 2009 10:06:54 :
Modifications de certains commentaires de "AllocateSpace ()". Modifications des noms de méthodes : "SetDescription ()" devient "SetTags ()" "GetDescription ()" devient "GetTags ()" Déplacement du bloc de code définissant "InsertNodeAfter ()". Modification du README en conséquence des changements de noms de méthodes.
14 décembre 2009 10:40:07 :
Modification de nom de membres de CHeapCollector : "m_pDescription" devient "m_pTags". Modification de 3-Doc/README en rapport avec la modification des noms de membres.
16 décembre 2009 14:07:27 :
Modification du corps de "CreateNode ()" : liberation des allocations dynamiques précédentes reussies en cas d'echec d'une suivante lors du lancement d'une exception. Recopie du fichier main.cpp.3 dans main.cpp afin d'illustrer un petit exemple dans l'aperçu ;)

 Sources du même auteur

Source avec Zip CALLOCATOR

 Sources de la même categorie

Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro
Source avec Zip Source avec une capture SHOP MANAGER CONSOLE SUR WINDOWS par antho974
Source avec Zip JOUR DE NAISSANCE par fredg19

 Sources en rapport avec celle ci

Source avec une capture COLORIMÈTRE NUMÉRIQUE LINUX par valchek
Source avec Zip Source avec une capture SOKOBAN EN C POUR DÉBUTANT (VERSION AMÉLIORÉE BASÉE SUR LE T... par eustatika
Source avec Zip [MYLIB] GESTION DE FICHIERS par Galaad2908
Source avec Zip LINUX USB BOOT LEGER par patatalo
Source avec Zip PROPAGER UN SIGNAL SIGINT DANS UNE CLASSE C++ (LINUX) par sbnl31

Commentaires et avis

Commentaire de shenron666 le 15/12/2009 14:44:14

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" ?

Commentaire de troctsch le 15/12/2009 16:20:05

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.

Commentaire de shenron666 le 15/12/2009 16:42:04

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 ;)

Commentaire de troctsch le 15/12/2009 18:36:03

Pas de soucis! Bonne lecture alors :)
N'hesites pas a me faire part de ce que tu en penses!
Cordialement.

Commentaire de shenron666 le 16/12/2009 16:57:55

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

Commentaire de troctsch le 16/12/2009 18:47:38

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.

Commentaire de troctsch le 17/12/2009 10:55:36

Je remanie complètement cette source. Je vous tiendrai au courant des évolutions dans un avenir proche.

Commentaire de shenron666 le 17/12/2009 15:49:36

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

Commentaire de troctsch le 17/12/2009 15:57:09

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.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

portage Linux vers visual C++ [ par acsx ] Salut,J'ai un programme écrit en C sous Linux et je souhaite le faire tourner sous Visual C++ 6.0 sous Windows.J'ai donc créé un projet win32 et intég ouverture de base Access [ par denis ] salut!voila mon probleme :j'ai cree une dll dans laquelle il y a une ouverture de base access au moyen d'une classe qui dérive de la classe CRecordset VCplusplus 6 [ par emaskaoui ] Comment je peux acceder au membre données d'une la classe à partir d'une autre classe? Merci dll pour asp avec connection odbc [ par denis ] salut!voila mon probleme :j'ai cree une dll dans laquelle il y a une ouverture de base access au moyen d'une classe qui dérive de la classe CRecordset Problème pour ouvrir une fenetre et écrire dedans sous Linux en C++ [ par Nicolas ] Je souhaiterais savoir comment ouvrir une fenetre sous linux en C++(pour écrire dedans avec des "cout")MerciA+ Nicolas Problème pour ouvrir une fenetre sous linux en c++ [ par Nicolas ] Je souhaiterais savoir comment ouvrir une fenetre sous linux en C++(pour écrire dedans avec des "cout")MerciA+ Nicolas Problème pour ouvrir une fenetre sous linux en c++ [ par Nicolas ] Je souhaiterais savoir comment ouvrir une fenetre sous linux en C++(pour écrire dedans avec des "cout")MerciA+ Nicolas Base de donées ADO [ par header ] Apres avoir importe la dll et tout ce qui faut pour qu'une classe générique de CADORecordBinding soit crée j'ai un problème : lorsque je commence mes AIDEZ MOI : LE DOWNLOAD AVEC la classe CHTMLVIEW [ par header ] il me faudrait un topo sur la classe CHtmlViewje ne sais pas comment faire une pause dans un telechargement...................AIDEZ MOI builder c++ 5 compile pas chez moi [ par ferrari ] voila j'ai un projet sous builder qui compilej'ai rajouter une classe perso mais lorsque je compile et que j'appelle une methode de ma classe, il me d


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,983 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales