logoalt Hacker News

FooBarWidgettoday at 12:35 PM2 repliesview on HN

Just look at this: https://blog.habets.se/2026/05/Everything-in-C-is-undefined-...

This is undefined behavior!

const int* magic_intp = (const int*)bytes;

Heck even something trivial like this is UB:

bool bar(char ch) { return isxdigit(ch); }

The only safe thing to do is memcpy, but that's super useless. As soon as you try to interpret or manipulate the byte-level data in any way, there are UB traps everywhere you go.


Replies

ueckertoday at 12:59 PM

Yes, using an arbitrary type that is different from the one of the object is UB. But any access of a representation byte using a character pointer is well defined, not just memcpy and I would also not call memcpy useless.