Pointeur, objet en c#

Signaler
Messages postés
572
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
4 mai 2020
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
Salut

Doit on liberer l'espace mémoire quand on fait un new ? si oui comment ?

thx

Herve

5 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
si ton objet implémente l'interface IDisposable, il suffit d'appeler la méthode Dispose();

sinon, tu affectes null à ton objet, le GAC se chargera du reste.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Salut,
Non, le framework s'en charge tout seul
Par contre, faut pas oublier de faire un x.Dispose() [voire un x = null] pour les objects implémentant IDisposable (ressource externe en principe). Pour des raisons de clarté, cette méthode s'appelle parfois Close (voire System.IO).

On peut aussi utiliser la sythaxe (using XXX xxx = new XXX()) { /* code */ } pour que le Dispose soit fait automatique. Cette synthaxe ne fonctionne bien sûr qu'avec les objects implémentants IDisposable...

Parfois, il est utille de forcer le GC à faire son travail, on peut alors appeler GC.Collect plutôt que d'attendre qu'il passe libérer les ressources.
Voilà en gros...

VC# forever
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Eu par le refresh... 4 min... m'a fallut un peu de temps pour rédiger le message, c'est pour ça

VC# forever
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Petite erreur de parenthèse ;) 
->    using(XXX xxx = new XXX()) {}

Pour le GC.Collect, meme si ca semble bien pratique, il est recommandé de ne pas s'en servir.
Voir ce petit article un peu agé qui indique quand l'utiliser

Mx
MVP C# 
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
58
Ha oui, tiens, merci pour la correction... j'aurais du me relire !

VC# forever