PRATIQUE TECHNOS .NET 
Utiliser des pointeurs en C#
 
Les pointeurs autorisent parfois des acrobaties périlleuses, mais nécessaires dans certains cas. C# les oblitère généralement, tout en permettant de passer outre sa gestion implicite de la mémoire. (30/08/2005)
À l'instar de Java, C# n'est pas censé proposer aux développeurs d'utiliser les pointeurs au sein de leurs programmes. Les pointeurs sont gérés de manière implicite par le langage, afin de parer à toute mauvaise gestion de la mémoire, cause fréquente d'erreur pour les programmes C/C++ par exemple.

Lorsque le besoin se fait sentir, il est cependant possible de force C# à accepter l'utilisation de pointeurs. Les instructions en question doivent alors être fermement surveillée, et donc le bloc conteneur doit afficher l'attribut "unsafe".

Cette appellation n'est pas innocente : il est possible dans un bloc unsafe de lancer des traitements tout aussi pernicieux qu'en C/C++.

using System;

class CodePointeurs {
    public static Main() {
      int Entier = 10;
      int* pEntier = &Entier;
      Console.WriteLine("Adresse de la variable : " + (int)pEntier);
      Console.WriteLine("Contenu de l'adresse : " + *pEntier);
    }
  }


  Forum

Réagissez dans les forums de JDN Développeurs

L'exemple est trivial, mais être mesure de sortie du code managé de C#, et accéder directement à la mémoire, peut dans certains cas se révéler salvateur. Les précautions d'usage sont bien entendu à prendre...
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page