Reducing array.length triggers reallocation

milentin via Digitalmars-d-learn digitalmars-d-learn at
Sun Dec 27 02:09:01 PST 2015

I've just started learning D and noticed a bug, but wanted to 
confirm it here before reporting it.

According to spec: "If the new array length is shorter, the array 
is not reallocated, and no data is copied. It is equivalent to 
slicing the array". Contradicted by a trivial program:

void main() {
     int[] arr;
     arr.length = 7;
     arr.length = 6; // not ok -- allocation
     int[] slice = arr[0..5]; // ok -- no allocation

dmd -profile=gc test.d
(DMD32 D Compiler v2.069.2)
bytes allocated, allocations, type, function, file:line
              28               1 int[] D main test.d:3
              24               1 int[] D main test.d:4

More information about the Digitalmars-d-learn mailing list