C-Code mit undefinierten Ergebnissen, Compiler generiert ungültigen Code (mit -O3)

Ich weiß, dass wenn Sie bestimmte Dinge in einem C-Programm tun, die Ergebnisse undefiniert sind. Der Compiler sollte jedoch kein @ generiereungülti (Maschinen-) Code, richtig? Es wäre vernünftig, wenn der Code das Falsche tun würde oder wenn der Code einen Segfehler oder etwas generieren würde ...

Ist dies gemäß der Compilerspezifikation der Fall oder handelt es sich um einen Fehler im Compiler?

Hier ist das (einfache) Programm, das ich verwende:

int main() {
    char *ptr = 0;
    *(ptr) = 0;
}

Ich kompiliere mit-O3. Das sollte aber keine ungültigen Hardwareanweisungen generieren, oder? Mit-O0, Ich bekomme einen Segfehler, wenn ich den Code ausführe. Das scheint viel vernünftiger zu sein.

Edit: Es wird ein @ generieud2 Anweisung..

Antworten auf die Frage(1)

Ihre Antwort auf die Frage