Pointeurs dans le système de type commun
Mise à jour : novembre 2007
Les pointeurs sont des variables d'un genre particulier. Le runtime prend en charge trois types de pointeurs : les pointeurs managés, les pointeurs non managés et les pointeurs fonction non managés.
Un pointeur managé (également appelé descripteur d'objet sur tas managé) est un type nouveau de pointeur, disponible pour les applications managées. Les pointeurs managés sont des références à un bloc managé de mémoire du tas du Common Language Runtime. Une opération garbage collection est appliquée automatiquement à ce tas. Des pointeurs managés sont générés pour les arguments de méthode qui sont passés par référence. Certains langages fournissent d'autres méthodes de génération de pointeurs managés. Seuls les pointeurs managés sont conformes CLS.
Remarque : |
---|
Dans Visual C++ 2002 et Visual C++ 2003, __gc * a été utilisé pour déclarer un pointeur managé. Cela est remplacé par ^ dans Visual C++ 2005 (par exemple ArrayList^ al = gcnew ArrayList();). |
Un pointeur non managé est le pointeur C++ traditionnel à un bloc de mémoire non managé du tas C++ standard. Puisque les pointeurs non managés ne font pas partie de la spécification de langage commun (CLS, Common Language Specification), votre langage pourrait ne pas fournir la syntaxe permettant de définir ces types ou d'y accéder. Consultez la documentation de votre langage pour obtenir des informations sur la prise en charge des pointeurs non managés.
Un pointeur C++ traditionnel faisant référence à l'adresse d'une fonction constitue également un pointeur fonction non managé. Le CLS fournit des délégués comme solution de remplacement managée à des pointeurs fonction non managés.
Une définition explicite d'un type pointeur n'est pas requise. Toutes les informations nécessaires pour déterminer le type d'un pointeur sont présentes au moment de la déclaration du pointeur.
Bien que les types pointeur soient des types référence, la valeur d'un type pointeur n'est pas un objet et vous ne pouvez pas déterminer le type exact d'une telle valeur.
Le système de type commun fournit deux opérations de type sécurisé sur les types pointeur : chargement d'une valeur à partir de l'emplacement référencé par le pointeur et écriture d'une valeur à cet emplacement. Ces opérations de type sécurisé sont conformes CLS.
Le système de type commun effectue également des opérations arithmétiques d'adresse basées sur trois octets sur les types pointeur : addition d'entiers au pointeur et soustraction d'entiers des pointeurs, ainsi que soustraction d'un pointeur d'un autre pointeur. Les résultats des deux premières opérations arithmétiques retournent une valeur du même type que le pointeur d'origine. Ces opérations basées sur des octets ne sont pas conformes CLS.
Voir aussi
Concepts
Spécification CLS (Common Language Specification)
Écriture d'un code conforme CLS