Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

No, that's not true at all. You check before you dereference, which is completely legitimate. If b is NULL then the dereference never happens, exactly as it should be.

To invoke undefined behavior and strange optimizations, you'd need to rearrange the code a bit:

    a = *b;
    if (!b)
        a = 3;
Here, the compiler can omit the if statement and its contents entirely, because b cannot be NULL, because the first line would invoke undefined behavior if it were.

A check for NULL before you dereference is always safe. It's when you do it the other way around that the compiler can start doing strange things.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: