On 2014-01-22 3:33 PM, Adam D. Ruppe wrote:
A memory block (static array, int[N]) is a value type in D; it is just a
big block of bytes, not a pointer. So what happens here is:
memcpy(&block, slice.ptr, slice.length);
Contrast that to:
int[] a = slice;
which compiles (conceptually) into:
a.ptr = slice.ptr;
a.length = a.length;
It's funny that you wrote this `a.length = a.length`, because I was
currently looking at
https://d.puremagic.com/issues/show_bug.cgi?id=11970 right before I read
your message.
But yes, static array / memory blocks vs pointer+len explains it better,
I'm trying to grow an idea of the concept of stacks but it's harder to
work with, I thought it would help me catch an idea of why I couldn't
prevent `ubyte[1024*1024] ub;` from crashing. While working with
buffers, this is going to come in handy!