2013-09-05 3 views
-14

Comment supprimer un pointeur en C++ sans supprimer l'objet pointé par le pointeur? Merci d'avance.Comment supprimer un pointeur sans supprimer l'objet pointé par le pointeur? C++

+0

Pourquoi? (remplisseur) ... – 0x499602D2

+4

Que voulez-vous dire par * supprimer un pointeur *? Vous ne supprimez pas les pointeurs (sauf si vous les avez dynamiquement alloués) mais les objets vers lesquels ils pointent. –

+0

Attendez simplement que le pointeur soit hors de portée. – cnicutar

Répondre

2

Un pointeur va juste sortir du cadre. Vous n'avez pas besoin de "supprimer" un pointeur. Vous avez seulement besoin de libérer la mémoire vers laquelle pointe un pointeur.

+0

.. à moins que vous ne le vouliez pas car il existe une autre copie de pointeur qui contient encore une référence. –

0

vous ne supprimez jamais pointeur explicite (sauf si vous les alloué dynamiquement), il est créé sur la pile et supprimé de la manière que la vie habituelle des variables de pile est traitée

int* avoid_leaker; 
{ 
int* i_ptr = new int(7); 
avoid_leaker = i_ptr; 
} // here i_ptr is gone but new int created on heap remains! 
    // we assigned it to avoid_leaker to avoid leak 

http://en.wikipedia.org/wiki/Memory_leak

+0

Ce n'est pas une * suppression * exactement. C'est une variable auto plutôt que de la mémoire allouée dynamiquement –

+0

vous ne supprimez jamais le pointeur explicite, il est créé sur la pile et supprimé comme d'habitude les variables de pile sont gérées – 4pie0

+0

Je crois que cette réponse est l'idée d'opérateurs de résolution de portée arbitraires pour contrôler la durée de vie des variables déclarées statiquement, contrôlant ainsi la durée de vie de i_prt. Une réponse finalement correcte, mais qui ne tient pas compte de l'incompréhension des OP quant à ce que fait réellement delete. – ChrisCM

Questions connexes