3 ms·
> Not every high-level language gives you byte-level access to the representation of memory objects. Any code that ventures anywhere near that territory is 99%
by FooBarWidget 2mo ago
> Not every high-level language gives you byte-level access to the representation of memory objects.
Any code that ventures anywhere near that territory is 99% Undefined Behavior. It's almost impossible to write proper C/C++ code that isn't UB while touching byte-level representations.
- uecker 2mo agoThis is certainly not true. Accessing bytes of objects is well-defined in C.
- FooBarWidget 2mo agoJust look at this: https://blog.habets.se/2026/05/Everything-in-C-is-undefined-behavior.html 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.
- uecker 2mo agoYes, 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.
- deleted 2mo ago[deleted]