More on C++ stack arrays

David Nadlinger code at klickverbot.at
Mon Oct 21 14:24:22 PDT 2013


On Monday, 21 October 2013 at 21:07:46 UTC, Iain Buclaw wrote:
> But yes.  I think a GC memcopy should be occuring, as dynamic 
> arrays
> aren't passed by value, so are expected to last the lifetime of 
> the
> reference to the address.

This doesn't produce a heap copy (neither according to the spec 
nor to actual DMD/LDC behaviour):

---
void foo() {
     int[3] a;
     int[] b = a;
}
---

Thus, your example will not copy any data either, as due to 
associativity, it is equivalent to an assignment to y followed by 
an assignment of y to x. x simply is a slice of the 
stack-allocated static array.

David


More information about the Digitalmars-d mailing list