hanem fordítóbeli bug
Nem, nem bug a fordítóban. A fordító a nyelv specifikációjának megfelelően működik, miszerint ha undefined behavior van, akkor bármi lehet a végeredmény. Ismétlem, ez nem bug, a fordítók deklaráltan így működnek. A C és C++ keverése csak egy vörös posztó a példában, de abban nincs semmi szabálytalan (persze a szépérzéket valóban bánthatja). Ami a tényleges gond, hogy null pointer által mutatott memóriára hivatkozik a program, ez innentől undefined behavior, és azért viselkedik így a fordító. Csak él egy olyan optimalizálással, amiről feltételezi, hogy rendben lesz, mert megbízik a programozóban, hogy tudja, mit csinál.
Olvasnivaló a témában:
https://devblogs.microsoft.com/oldnewthing/20140627-00/?p=633