I run the program (at the bottom) and get, as expected, the run-time out of memory error:
PS C:\D\sandbox> .\Reserve.exe
newCapacity = [ 1]
newCapacity = [ 3]
newCapacity = [ 5]
o o o
newCapacity = [ 905,207,293]
newCapacity = [ 905,207,805]
newCapacity = [ 905,208,317]
core.exception.OutOfMemoryError@src\core\lifetime.d(126): Memory allocation failed
Is there a way to programmatically determine the exact maximum memory size available to the DRuntime’s array implementation?
import std.stdio;
import std.format;
void main()
{
ulong[] big;
size_t newCapacity;
size_t oldCapacity;
foreach(i; 0..ulong.max)
{
newCapacity = big.reserve(i);
if(oldCapacity != newCapacity)
{
writeln(" newCapacity = ", format("[%15,3d]", newCapacity) );
oldCapacity = newCapacity;
}
}
}