Ein Compiler lässt nie aufgerufenen Code explodieren – weil C undefined behavior hat

Attention people who think UB is fine

Wer glaubt, undefined behavior in C sei harmlos und führe höchstens zu einem Segfault, irrt. Anhand von GCC 16.2 und clang zeigt der Autor, wie ein std::unreachable() dazu führt, dass eine nie aufgerufene Funktion trotzdem im Binary landet und ausgeführt wird – die „explodierende Schokolade“. Auch das Dereferenzieren eines Nullpointers verhält sich nicht wie erwartet: Statt 99 wird eine Null geschrieben, dann stürzt das Programm ab. UB kann schlicht alles bedeuten.

Und wenn man bedenkt, dass manche Leute nicht an Nasendämonen glauben.

Mehr von diesem Tag

2026-10-25