Unexpected behavior when casting away immutable
    Mafi via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Wed Sep 23 04:38:36 PDT 2015
    
    
  
On Wednesday, 23 September 2015 at 05:24:05 UTC, John Colvin 
wrote:
> On Wednesday, 23 September 2015 at 03:39:02 UTC, Mike Parker 
> wrote:
...
>>
>> ```
>> immutable int x = 10;
>> int* px = cast(int*)&x;
>> *px = 9;
>> writeln(x);
>> ```
>>
>> It prints 10, where I expected 9. This is on Windows. I'm 
>> curious if anyone knows why it happens.
>
> violating immutable is undefined behaviour, so the compiler is 
> technically speaking free to assume it never happens. At the 
> very least, neither snippet's result is guaranteed to show a 
> change or not. At the most, literally anything can happen.
In essence, this code snippet is even better than the OP expected 
in showing why you shouldn't cast away immutable.
    
    
More information about the Digitalmars-d-learn
mailing list