On Thursday, 6 March 2025 at 16:11:37 UTC, Ali Çehreli wrote:
On 3/6/25 6:34 AM, Paul Backus wrote:

> are allowed to refer to the same memory location. However,
there are
> still cases where *dereferencing* those pointers can lead to
undefined
> behavior.

This topic came up among colleagues recently. I think such restrictions come from CPU architectures where, as I remember reading on C++ forums years ago, the mere act of loading a misaligned pointer value into a pointer register would cause an error (trap?).

ARM is like that, but I think you really must make a load out of that pointer.


I cast any odd pointer value to any sized integer (and in one case to a struct pointer) from a void* buffer area and it works on the Intel CPU that I am working on.

As long as pointer is properly aligned for the data in question eg 4 bytes for int* pointer it should still work.

Will this work on all or most modern CPUs?

Ali

—
Dmitry Olshansky
dmitry at olshansky.me
https://olshansky.me



Reply via email to