strict-aliasing

Striktes Aliasing ist eine Annahme, die vom C- oder C ++ - Compiler gemacht wird, dass die Rückstellung von Zeigern auf Objekte unterschiedlichen Typs sich niemals auf denselben Speicherort bezieht (d. h. sie aliasieren sich nicht gegenseitig).
3
Antworten

Unterschiedliches Verhalten des Schichtoperators mit -O2 und ohne

Ohne -O2 gibt dieser Code 84 84 aus, mit O2-Flag ist die Ausgabe 84 42 . Der Code wurde mit gcc 4.4.3. auf einer 64-Bit-Linux-Plattform kompiliert. Warum ist die Ausgabe für den folgenden Code anders? Beachten Sie, dass bei der Kompil...
04.03.2011, 15:29
3
Antworten

Ist es möglich, die Optimierung der Verbindungszeit zu aktivieren, während nur das strikte Aliasing für einige Funktionen deaktiviert wird?

Mein Programm entspricht der strengen Aliasing-Regel, mit Ausnahme einer Stelle: einer Kompilierungseinheit, die Hash-Funktionen wie MurmurHash3, SpookyHash usw. enthält. Auf x86 und x86_64 akzeptieren diese Hashing-Funktionen const char * , w...
10.09.2014, 11:45
2
Antworten

C ++ - striktes Aliasing, wenn kein Zeiger verwendet wird, der von placement new zurückgegeben wird

Kann dies zu undefiniertem Verhalten führen? %Vor% char hat spezielle Regeln für das strikte Aliasing. Wenn ich char anstelle von uint8_t verwende, ist es immer noch Undefined Behavior? Was ändert sich noch? Wie Mitglied DeadMG...
08.01.2014, 00:26
2
Antworten

Strict pointer aliasing: Ist der Zugriff über einen 'volatilen' Pointer / Verweis auf eine Lösung?

Auf den Fersen von ein spezifisches Problem , eine Selbstantwort und Kommentare dazu, würde ich gerne verstehen, ob es eine richtige Lösung, Workaround / Hack oder einfach nur falsch ist. Insbesondere habe ich den Code umgeschrieben: %Vor%...
05.06.2010, 19:50
6
Antworten

MEMPPY-konformes Schreiben mit striktem Aliasing

Die allgemeine Antwort auf die Frage "Wie implementiert man die memcpy-Funktion mit strengen Aliasing-Regeln?" ist etwas nach dem Motto %Vor% Wenn ich jedoch richtig verstanden habe, kann der Compiler den Aufruf von memcpy und den Zugriff au...
31.07.2014, 13:57
2
Antworten

Strenge Alias- und Overlay-Vererbung

Betrachten Sie dieses Codebeispiel: %Vor% Ich dachte immer, dass etwas wie das Übergeben von B * an A * und das Verwenden von A * zum Manipulieren des B * -Objekts eine strenge Aliasing-Verletzung ist. Aber dann erkannte ich, dass der Standa...
20.02.2017, 19:20
1
Antwort

strenges Aliasing in C

Frage zum Typ punning: Warum bricht dieser Code strenge Aliasing-Regeln: %Vor% und das ist nicht: %Vor% Erstellen von gcc -fstrict-aliasing . Danke!     
04.08.2014, 11:39
4
Antworten

C Speicherzuordner und striktes Aliasing

selbst nachdem ich ziemlich viel über die strengen Aliasing-Regeln gelesen habe, bin ich immer noch verwirrt. Soweit ich das verstanden habe, ist es unmöglich, einen vernünftigen Speicherzuordner zu implementieren, der diese Regeln befolgt, da M...
07.10.2011, 12:15
5
Antworten

Die gcc-Optimierung überspringt die Initialisierung des zugewiesenen Speichers

Mit gcc 4.9.2 20150304 64 Bit stieß ich auf dieses scheinbar seltsame Verhalten: %Vor% Im Code ordne ich einen double auf dem Heap zu, initialisiere ihn und gebe dann ein weiteres double initialisiert mit der Adresse des ersten in ein...
09.05.2015, 08:01
1
Antwort

Ist es okay für int ** und const int **, um einen Alias ​​zu erstellen?

Ich verstehe, dass so etwas in Ordnung ist: %Vor% Was ist damit? %Vor%     
16.07.2017, 01:08