Pointeur, objet en c#

Seth77 Messages postés 572 Date d'inscription mardi 30 avril 2002 Statut Membre Dernière intervention 4 mai 2020 - 7 sept. 2006 à 11:48
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 7 sept. 2006 à 12:48
Salut

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

thx

Herve

5 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 36
7 sept. 2006 à 11:52
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#]
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
7 sept. 2006 à 11:56
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
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
7 sept. 2006 à 11:59
Eu par le refresh... 4 min... m'a fallut un peu de temps pour rédiger le message, c'est pour ça

VC# forever
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
7 sept. 2006 à 12:42
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# 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
7 sept. 2006 à 12:48
Ha oui, tiens, merci pour la correction... j'aurais du me relire !

VC# forever
0
Rejoignez-nous