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

Reply via email to