Pointers to DTrace Objects
The D compiler prohibits you from using the & operator to obtain
pointers to DTrace objects such as associative arrays, built-in functions, and variables.
You are prohibited from obtaining the address of these variables so that
the DTrace runtime environment is free to relocate them as needed between
probe firings in order to more efficiently manage the memory required for
your programs. If you create composite structures, it is possible to construct
expressions that do retrieve the kernel address of your DTrace object storage.
You should avoid creating such expressions in your D programs. If you
need to use such an expression, be sure not to cache the
address across probe firings.
In ANSI-C, pointers can also be used to perform indirect function calls
or to perform assignments, such as placing an expression using the unary
* dereference operator on the left-hand side of an assignment operator. In
D, these types of expressions using pointers are not permitted. You may
only assign values directly to D variables using their name or by
applying the array index operator [] to a D scalar or associative
array. You may only call functions defined by the DTrace environment by
name as specified in Chapter 10, Actions and Subroutines. Indirect function calls using pointers are not
permitted in D.