Hi! Can anybody explain why this snippet segfaults when I try to run it:

char[] array = new char[5];

void main()
{
    array[0] = 'a';
}

It works fine if I move the array into main, or (strangely) if I change its type to ubyte[] instead of char[], or if I merely read the array without modifying it. I assumed it would heap-allocate a mutable dynamic array before main runs, but maybe I've misunderstood what `new` expressions do at module scope? Or is this some special case for char arrays (strings)?

I really don't know what to make of it.

Reply via email to