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 this way,
DTrace can 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, do not rely on the address being the same 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 by specifying
their name or by applying the array index operator
[]
to a D scalar or associative array. You
may only call functions that are defined by the DTrace
environment by name, as specified in
Chapter 4, Actions and Subroutines. Indirect function calls using
pointers are not permitted in D.