Bonsoir à tous,
vous allez trouvez la question certainement un peu redondante mais les explications fournies ainsi que les exemples me semblent trop complexes, enfin je veux dire qu'avec des exemples plus simples on comprendrait plus parfaitement.
Je vous donne donc un exemple vraiment trivial :
C'est trivial hein ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
Ce je voudrais savoir c'est si au retour de fonction1() mon pointeur intelligent a un use_count() de 1 ou de 0 ?
Je suis un peu perturbé car en Objective-C on nous dit de faire systématiquement un [p retain] pour augmenter le compteur et un [p release] à la fin pour le décrémenter.
Ici je serais tenté de faire un Classe1_ptr(p) pour augmenter le compteur...
J'ai fait des tests : et le use_count au retour est bien de 1, mais va-t-il le rester ? Si je fais Classe1_ptr(p), le use_count passe à 2, ce qui est logique. Est-ce que je prends un risque vis-à-vis de la destruction, est-ce que c'est nécessaire ou inutile ?
Sinon petite question subsidiaire :
S'agissant d'un vector<Classe1_ptr>, si je le récupère en retour d'une fonction, quel est le use_count des éléments qu'il contient ? Ne prenais-je pas le risque de voir son contenu disparaitre si je n'agis pas sur le compteur des éléments ?
je vous remercie pour ces éclaircissements qui je suis sur seront de nature à aider les autres qui comme moi pataugent un peu avec cette syntaxe (je suis plus à l'aise en Objective-C je l'avoue...)
Salutations
Tristan

 

 
		
		 
         
 

 
			
			


 
   



 Une petite synthèse sur la transmission des shared_ptr
 Une petite synthèse sur la transmission des shared_ptr
				
 Répondre avec citation
  Répondre avec citation
Partager