ldc executable crashes with this code

forkit forkit at gmail.com
Thu Feb 3 01:39:33 UTC 2022


On Wednesday, 2 February 2022 at 23:30:50 UTC, H. S. Teoh wrote:
> On Wed, Feb 02, 2022 at 11:21:52PM +0000, forkit via 
> Digitalmars-d-learn wrote: [...]
>>     char[] palindrome = cast(char[])"able was I ere I saw 
>> elba";
>
> String literals are immutable by default. Casting immutable to 
> mutable
> is UB (Undefined Behaviour).
>
>
> [...]
>>     writeln(palindrome.reverse);
>
> Especially because .reverse mutates its argument.  So you're 
> attempting to overwrite immutable data here. That's probably 
> what caused the crash: the literal is put in the read-only 
> segment and the OS killed the program when it tried to write to 
> data in that read-only segment.
>
>
> T

that explains ldc perhaps (although i don't really get it. It's 
cast to mutable and being assigned to mutable.

in any case... ldc doesn't like it, but dmd is fine with this ??



More information about the Digitalmars-d-learn mailing list