Solaris 动态跟踪指南

指向 DTrace 对象的指针

D 编译器禁止使用 & 运算符来获取指向 DTrace 对象(如关联数组、内置函数和变量)的指针。禁止获取这些变量的地址,可以使 DTrace 运行时环境根据需要在探测器触发之间重新对变量定位,以便更有效地管理程序所需的内存。如果创建复合结构,则可以构造不检索 DTrace 对象存储的内核地址的表达式。应避免在 D 程序中创建这类表达式。如果需要使用这样的表达式,一定不要在探测器触发之间高速缓存地址。

在 ANSI-C 中,还可使用指针执行间接函数调用或赋值,如将使用一元 * 取消引用运算符的表达式放在赋值运算符的左边。在 D 中,不允许这些使用指针的表达式类型。您只能通过使用名称或对 D 标量数组或关联数组应用数组索引运算符 [] 来直接对 D 变量赋值。只能通过第 10 章中指定的名称来调用 DTrace 环境定义的函数。D 中不允许那些使用指针进行的间接函数调用。