Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

= null au lieu de dispose

4 réponses
Avatar
J-L
Bonjour

Pour un objet qui n'implémente pas IDisposable, est-ce qu'une
assignation du type

MonObjet = null;

suffit à détruire l'objet et à libérer la mémoire?

J-L !

4 réponses

Avatar
Delf
J-L a couché sur son écran :

Pour un objet qui n'implémente pas IDisposable, est-ce qu'une assignation du
type

MonObjet = null;

suffit à détruire l'objet et à libérer la mémoire?



Non, c'est le GC qui s'en chargera.

--
Delf
Avatar
Gilles Kohl [MVP]
On Tue, 10 Jun 2008 16:02:35 +0200, J-L
wrote:

Bonjour

Pour un objet qui n'implémente pas IDisposable, est-ce qu'une
assignation du type

MonObjet = null;

suffit à détruire l'objet et à libérer la mémoire?



En principe, oui. Deux remarques:

1) pour que la mémoire soit libérée, aucune référence à l'objet doit
subsister. Contre-example:

ClasseQuelconque monObjet;
ClasseQuelconque monObjet2;

monObjet = new ClasseQuelconque();

monObjet2 = monObjet; // copie de la référence

monObjet = null; // pas suffisant, il faudra aussi ...

monObjet2 = null; // pour faire libérer la mémoire.

2) la mémoire ne sera pas libérée tout de suite, mais quand jugera bon
le collecteur automatique (GC).

Amicalement,
Gilles.

Regards,
Gilles [MVP].

(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
Avatar
J-L
>
Non, c'est le GC qui s'en chargera.



ok, mais seul le GC aura connaissance de cet objet ? Je veux dire qu'il
n'y aura plus aucune référence sur cet objet dans mon code ?
Avatar
Delf
J-L a écrit :

ok, mais seul le GC aura connaissance de cet objet ? Je veux dire qu'il n'y
aura plus aucune référence sur cet objet dans mon code ?



Si tu n'as plus de référence dessus le GC droppera (ou pas) l'objet
lors de sa prochaine action.

--
Delf