Sommaire

Gérer le code « non managé »

Que peut bien être du code managé en C#, langage pourtant managé ? Eh bien typiquement des éléments de mémoire alloués par un autre programme et qu’il s’agit de désallouer dans votre code à vous. Dans cet exemple, il est évident que le ramasse-miettes n’a aucune connaissance de cette mémoire à désallouer : il s’agira donc de le faire à sa place de manière explicite.

Il est possible que la classe associée à la mémoire à désallouer fournisse une méthode de « finalisation », type de méthodes que nous allons expliquer dès maintenant.

1. La « finalisation » en C#

Fournir une telle méthode de finalisation (peu ou prou un destructeur dans d’autres langages) ne présume pas de son appel par le ramasse-miettes. On ne maîtrise pas le moment de l’appel de cette méthode. Par contre, on fournit l’implémentation : on maîtrise donc a minima la façon dont la désallocation va s’opérer.

Dans l’exemple suivant, ~MaClasse() sera appelé à un moment donné par le ramasse-miettes. Quand exactement, on ne sait pas.

    class MaClasse  
    {  
        int[] notes;  
  
        public MaClasse()  
   ...