Consequences of casting away immutable from pointers
Steven Schveighoffer
schveiguy at yahoo.com
Fri Jan 5 04:10:54 UTC 2018
On 1/4/18 10:58 PM, jmh530 wrote:
> I'm trying to understand the consequences of casting away immutable from
> a pointer. The code below has some weird things going on like the
> pointers still point to the correct address but when you dereference
> them they don't point to the correct value anymore.
>
> Should I just assume this is undefined behavior and not bother with it?
> Or is there a use case for this?
Yes, this is undefined behavior.
https://dlang.org/spec/const3.html#removing_with_cast
The compiler assumes x is going to be 5 forever, so instead of loading
the value at that address, it just loads 5 into a register (or maybe it
just folds x == 5 into true).
The compiler would likely be free to assume *p_x == 5 forever also, if
it was clever enough.
I'd recommend not doing this.
-Steve
More information about the Digitalmars-d-learn
mailing list