Alias-Phänomene
Von einem Alias-Phänomen spricht man,
wenn ein und dasselbe Speicherobjekt
über mehrere Zugriffspfade zugänglich ist;
dann verändert ein Schreibzugriff über einen der Pfade
auch den über die anderen Pfade erreichbaren Wert.
Dies kann natürlich zu Überraschungen führen
und ist oft lokal nicht leicht zu erkennen.
Alias-Phänomene können auf unterschiedliche Weise zustande kommen:
-
Zwei mit unterschiedlichen Index-Variablen indizierte Komponenten
eines Array beziehen sich dennoch auf dasselbe Speicherobjekt,
wenn die Inhalte der Index-Variablen gleich sind.
-
Wenn zu einem Zugriffspfad ein Pointer-Wert existiert,
kann dieser in mehreren Pointer-Variablen liegen.
-
Ein Referenz-Parameter bestimmt einen Zugriffspfad.
Mehrere Referenz-Parameter könnten an dasselbe aktuelle
Objekt als Argument gebunden sein.
-
Ein Objekt kann gleichzeitig sowohl global sichtbar sein,
wie auch über einen Referenz-Parameter.
-
In manchen Programmiersprachen lassen sich explizite Referenzen
auf Variablen und damit zusätzliche Zugriffspfade konstruieren
(das ist etwa in C mit dem &-Operator möglich und
manchmal auch nötig, um Ergebnisse einer Prozedur
zurückzuliefern, da es dort keine Referenz-Parameter gibt).
Kombinationen aller dieser Möglichkeiten können in der Praxis
vorkommen, je nach der Mächtigkeit der Programmiersprache;
sie zu erkennen, ist in der Regel recht schwierig und manchmal sogar
vor dem Programmablauf nachweislich unmöglich.
Dies hat leider Auswirkungen auf die Praxis des Compilerbaus:
manche Strategien zur Umwandlung eines Programms
in eine effizientere Form sind nicht korrekt anwendbar,
wenn man mit Alias-Phänomenen zu rechnen hat.
zurück |
Inhalt | Index |
vor |
Vorlesung
Klaus Lagally, 22. Februar 2000, 19:36