Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1772 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  les classe std::vector de la STL et cycle de vie des objets

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

les classe std::vector de la STL et cycle de vie des objets

n°633082
El_gringo
Posté le 06-02-2004 à 09:32:49  profilanswer
 

Je n'arrive pas à trouver ça dans les diverses docs :
le bout de code suivant est il ok (sans fuite mémoire) ?

Code :
  1. {
  2.   vector<MaClasse> v;
  3.   MaClasse* truc = new MaClasse();
  4.   v.push_back (truc);
  5. }


pas de destruction implicite de l'instance pointée par "truc". vector sera sans doute vidé à sa destruction (appel à la méthode "clear()" ). Ceci prendra t il en change la destruction  de l'instance référencée, ou est ce que ça supprime uniquement la référence ?
Je devrais plutôt faire le truc suivant ?

Code :
  1. {
  2.   vector<MaClasse> v;
  3.   MaClasse* truc = new MaClasse();
  4.   v.push_back (truc);
  5.   // des trucs
  6.   delete truc;
  7. }


---------------
Les Vers Solitaires, on aime ... ou pas !
mood
Publicité
Posté le 06-02-2004 à 09:32:49  profilanswer
 

n°633102
Kristoph
Posté le 06-02-2004 à 09:48:56  profilanswer
 

La solution est simple en fait :

Code :
  1. {
  2.     vector<MaClasse> v;
  3.     MaClasse* truc = new MaClasse();
  4.     v.push_back (truc);
  5.     delete truc;
  6.     // des trucs
  7. }


 
Ceci car vector<MaClasse> v est un vecteur de MaClasse et non pas un vecteur de MaClasse*. Donc truc est recopié dans v.

n°633105
El_gringo
Posté le 06-02-2004 à 09:53:48  profilanswer
 

Kristoph a écrit :

La solution est simple en fait :

Code :
  1. {
  2.     vector<MaClasse> v;
  3.     MaClasse* truc = new MaClasse();
  4.     v.push_back (truc);
  5.     delete truc;
  6.     // des trucs
  7. }


 
Ceci car vector<MaClasse> v est un vecteur de MaClasse et non pas un vecteur de MaClasse*. Donc truc est recopié dans v.


 
Donc c'est encore plus simple de ne pas construire dynamiquement mon objet en fait :

Code :
  1. {
  2.     vector<MaClasse> v;
  3.     MaClasse truc();
  4.     v.push_back (truc);
  5.     // des trucs
  6. }


 
comme ça, ça roule alors !?


---------------
Les Vers Solitaires, on aime ... ou pas !
n°633108
chrisbk
-
Posté le 06-02-2004 à 09:57:52  profilanswer
 

Kristoph a écrit :

La solution est simple en fait :

Code :
  1. {
  2.     vector<MaClasse> v;
  3.     MaClasse* truc = new MaClasse();
  4.     v.push_back (truc);
  5.     delete truc;
  6.     // des trucs
  7. }


 
Ceci car vector<MaClasse> v est un vecteur de MaClasse et non pas un vecteur de MaClasse*. Donc truc est recopié dans v.


 
tiens t'arrive a faire rentrer un MaClasse * dans un MaClasse toi  ?

n°633114
verdoux
And I'm still waiting
Posté le 06-02-2004 à 10:03:56  profilanswer
 

Autrement il y a:

Code :
  1. vector<boost::shared_ptr<MaClasse> > v;
  2. v.push_back(boost::shared_ptr<MaClasse>(new MaClasse()));


Et tout sera libéré à la destruction de v


Message édité par verdoux le 06-02-2004 à 10:05:01
n°633115
chrisbk
-
Posté le 06-02-2004 à 10:04:39  profilanswer
 

et en plus c'est lisible ( [:chacal_one333] )

n°633146
Kristoph
Posté le 06-02-2004 à 10:29:28  profilanswer
 

chrisbk a écrit :


 
tiens t'arrive a faire rentrer un MaClasse * dans un MaClasse toi  ?


 
Non, on va dire que c'est une typo ;)

n°633246
El_gringo
Posté le 06-02-2004 à 11:20:25  profilanswer
 

Merci en tout cas, pour les réponses.


---------------
Les Vers Solitaires, on aime ... ou pas !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  les classe std::vector de la STL et cycle de vie des objets

 

Sujets relatifs
classe templates et amiesSTL : se débarrasser des tableaux issus du C
Problème tri d'une liste objet (STL)[C++] Classe Thread (ca marche)
transfert d'objets entre servletsSTL : gestion des exception. appel explicite?
[VC++6] Quand initialiser les positions de mes objets?utilisation d'une classe abstraite
[C#] Différence entre une structure et une classe ?[C++/STL] Retrait d'un élément dans une list
Plus de sujets relatifs à : les classe std::vector de la STL et cycle de vie des objets


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR