Guía de seguimiento dinámico de Solaris

Punteros a objetos de DTrace

El compilador en D le prohíbe utilizar el operador & para obtener punteros a los objetos de DTrace como matrices asociativas, funciones incorporadas y variables. Se le prohibe obtener la dirección de estas variables, de forma que el entorno de tiempo de ejecución de DTrace pueda volver a ubicarlas conforme sea necesario entre los lanzamientos de sondeos, para administrar con más eficacia la memoria requerida por los programas. Si crea estructuras compuestas, es posible construir expresiones que recuperen la dirección del núcleo del almacenamiento de objetos de DTrace. Debería evitar crear estas expresiones en sus programas en D. Si necesita utilizar dicha expresión, asegúrese de no guardar en la antememoria la dirección a través de los lanzamientos de sondeos.

En ANSI-C, los punteros también se pueden utilizar para realizar llamadas a funciones indirectas o para realizar asignaciones, como colocar una expresión mediante un operador de anulación de referencia unario * en la parte izquierda de un operador de asignación. En D no se permiten estos tipos de expresión con punteros. Sólo puede asignar valores directamente a variables en D mediante su nombre o aplicando el operador de índice de matrices [] a una matriz escalar o asociativa. Sólo puede llamar a funciones definidas por el entorno de DTrace, tal como se especifica en el Capítulo 10Acciones y subrutinas. Las llamadas a funciones indirectas mediante punteros no están permitidas en D.