Handbuch zur dynamischen Ablaufverfolgung in Solaris

Zeiger auf DTrace-Objekte

Der D-Compiler verbietet Ihnen den Einsatz des Operators & zum Erhalten von Zeigern auf DTrace-Objekte wie assoziative Vektoren, integrierte Funktionen und Variablen. Sie werden daran gehindert, die Adressen dieser Variablen abzurufen, damit die DTrace-Laufzeitumgebung sie zwischen den verschiedenen Prüfpunktauslösungen nach Bedarf verschieben und so den für Ihre Programme benötigten Speicher effizienter verwalten kann. Wenn Sie zusammengesetzte Strukturen erstellen, besteht die Möglichkeit, Ausdrücke zu formulieren, die die Kerneladresse des DTrace-Objektspeichers abrufen. Verzichten Sie in Ihren D-Programmen auf solche Ausdrücke. Sollten Sie dennoch einen solchen Ausdruck benötigen, achten Sie darauf, die Adresse nicht über mehrere Prüfpunktauslösungen hinweg zwischenzuspeichern.

In ANSI-C können Zeiger auch für indirekte Funktionsaufrufe oder Zuweisungen wie das Absetzen eines Ausdrucks mit dem unären *-Dereferenzierungsoperator auf der linken Seite eines Zuweisungsoperators verwendet werden. In D sind diese Arten der Ausdrücke mit Zeigern nicht erlaubt. Sie dürfen D-Variablen Werte nur direkt zuweisen, indem Sie entweder ihre Namen verwenden oder den Vektorindex-Operator [] auf einen skalaren oder assoziativen D-Vektor anwenden. In der DTrace-Umgebung definierte Funktionen dürfen, wie in Kapitel 10Aktionen und Subroutinen erläutert, nur über ihren Namen aufgerufen werden. Indirekte Funktionsaufrufe mithilfe von Zeigern sind in D nicht zulässig.