On 09/01/2015 12:43 AM, qznc wrote:
On Monday, 31 August 2015 at 22:03:07 UTC, jmh530 wrote:
In general, I find myself very easily getting mixed up by the syntax
of the static vs. dynamic arrays. For instance, compare
int[] x = new int[3];
int[3] y = new int[3];
auto z = new int[3];
x and y are obviously dynamic and static arrays, respectively.
However, my initial guess on z is that is like y, a static array on
the heap. But that is wrong. It's actually like x. Easy to get confused.
In general, "new" means heap allocation.
I wonder about the initialization of y. Maybe it creates a temporary
dynamic array on the heap and then copies it to the static array on the
stack?
Seems to be so:
import std.stdio;
void main()
{
int[] x = new int[3];
int[3] y = new int[3];
auto z = new int[3];
writeln(x.ptr);
writeln(y.ptr);
writeln(z.ptr);
}
y's elements are on the stack:
7F1375618200
7FFF091A9910
7F1375618220
Ali