Manuel de suivi dynamique Solaris

Pointeurs sur des objets DTrace

Le compilateur D vous empêche d'utiliser l'opérateur & afin d'obtenir des pointeurs sur des objets DTrace comme des ensembles associatifs, des fonctions intégrées et des variables. Vous ne pouvez pas obtenir l'adresse de ces variables de sorte que l'environnement d'exécution DTrace est libre de les relocaliser si nécessaire entre des déclenchements de sonde afin de gérer plus efficacement la mémoire nécessaire aux programmes. Si vous créez des structures composites, il est possible de développer des expressions permettant de récupérer l'adresse du noyau de votre stockage d'objet DTrace. Vous ne devez pas créer de telles expressions dans vos programmes D. Si vous devez utiliser une telle expression, veillez à ne pas mettre l'adresse en cache entre les déclenchements de sonde.

Dans ANSI-C, les pointeurs peuvent également être utilisés pour exécuter des appels de fonction indirects ou des affectations, comme le placement d'une expression à l'aide de l'opérateur de déréférencement unaire * à gauche d'un opérateur d'affectation. Dans D, ces types d'expression utilisant des pointeurs ne sont pas autorisés. Vous ne pouvez affecter des valeurs directement à des variables D que via leur nom ou en appliquant l'opérateur d'index d'ensemble [] à un ensemble scalaire ou associatif D. Vous pouvez uniquement appeler des fonctions définies par l'environnement DTrace par leur nom, tel que spécifié dans le Chapitre10Actions et sous-routines Les appels de fonction indirects utilisant des pointeurs ne sont pas autorisés dans D.