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!

Reply via email to