question sur auto_ptr

question sur auto_ptr - C++ - Programmation

Marsh Posté le 25-08-2010 à 16:54:41    

bonjour,

 

j'aimerai savoir si on peut utiliser auto_ptr avec une variable locale ?

 

ie :

 
Code :
  1. void local() {
  2. int a = 2;
  3. monAutoPointer.reset(&a); //auto_ptr<int> monAutoPointer est défini ailleurs, en global par exemple
  4. }
 

est ce que après la fin de la fonction local(), on aura toujours accès à la valeur de 'a' dans l'auto_ptr ?
merci par avance


Message édité par in_your_phion le 25-08-2010 à 16:57:09
Reply

Marsh Posté le 25-08-2010 à 16:54:41   

Reply

Marsh Posté le 25-08-2010 à 17:12:57    

Non.  1/ Tu conserves au dela de la duree de vie de la variable un pointeur vers celle-ci.  2/ Tu stockes dans un auto_ptr un pointeur sur lequel on ne peut pas faire de delete.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 25-08-2010 à 17:17:54    

Un Programmeur a écrit :

Non.  1/ Tu conserves au dela de la duree de vie de la variable un pointeur vers celle-ci.  2/ Tu stockes dans un auto_ptr un pointeur sur lequel on ne peut pas faire de delete.


 
ok merci! donc je suis obligé de faire un new avant alors ?

Reply

Marsh Posté le 25-08-2010 à 17:34:31    

Peut-etre.  Tout depend de ce que tu veux faire.  Allouer dynamiquement un entier, c'est rare (en fait, les seuls cas que je vois de but en blanc, c'est pour contourner un limitation d'une conception qu'on ne peut pas changer).


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 25-08-2010 à 18:31:24    

Un Programmeur a écrit :

Peut-etre.  Tout depend de ce que tu veux faire.  Allouer dynamiquement un entier, c'est rare (en fait, les seuls cas que je vois de but en blanc, c'est pour contourner un limitation d'une conception qu'on ne peut pas changer).


 
oki ... merci, effectivement le int était juste pour l'exemple :p

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed