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