( ricpet | 2025. 03. 07., p – 08:00 )

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

https://blog.regehr.org/archives/759

https://blog.regehr.org/archives/767