IT-Lexikon › Programmierung › Strict aliasing

Strict aliasing

Programmierung Svenska → Aktualisiert: 2026-09-16

Die Regel in C und C++, dass ein Objekt nur über einen zu seiner Erzeugung kompatiblen Typ gelesen werden darf. Verstößt man dagegen, funktioniert der Code unoptimiert — und bricht mit Optimierung zusammen.

Der Nutzen für den Compiler ist erheblich: Darf er annehmen, dass ein int-Zeiger und ein float-Zeiger niemals auf denselben Speicher zeigen, kann er Werte über Schreibzugriffe hinweg in Registern halten, Schleifen vektorisieren und Lesevorgänge frei umordnen. Ohne diese Annahme müsste jeder Schreibzugriff über einen fremden Zeiger so behandelt werden, als könnte er alles verändert haben. Den Preis zahlt aller Code, der Bitmuster durch Zeiger-Casts umdeutet — in den Neunzigern in C alltäglich und bis heute verbreitet in Signalverarbeitung und Serialisierung. Das Symptom ist unangenehm typisch: Im Debug-Build funktioniert alles, im optimierten Build liefert es falsche Ergebnisse. Die legalen Wege sind memcpy, Unions in C und bit_cast im modernen C++. Der Linux-Kernel baut stattdessen grundsätzlich mit abgeschalteter Regel.

← Zurück zum Lexikon