Namespace:

void main()
{
        int[] arr1 = new int[512];
        writeln(arr1.length, "::", arr1.capacity);
        int[] arr2 = new int[](512);
        writeln(arr2.length, "::", arr2.capacity);
}
----

Output:
512::1019
512::1019

import std.stdio, std.array;
void main() {
    auto a1 = new int[512];
    writeln(a1.length, " ", a1.capacity);
    auto a2 = new int[](512);
    writeln(a2.length, " ", a2.capacity);
    auto a3 = minimallyInitializedArray!(int[])(512);
    writeln(a3.length, " ", a3.capacity);
}


Output:
512 1019
512 1019
512 0

But that (of new arrays) is a bad design, it wastes too much memory, and I think it should be fixed. In Python this doesn't overallocate:

a4 = [0] * 512

An alternative is to introduce a function like std.array.InitializedArray.

Bye,
bearophile

Reply via email to