Memory allocation failed. Why?

Steven Schveighoffer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Nov 22 07:53:39 PST 2016


On 11/21/16 11:53 AM, ag0aep6g wrote:
> On Monday, 21 November 2016 at 16:37:32 UTC, Kagamin wrote:
>> Anything in .data and .bss sections and stack. See
>> https://issues.dlang.org/show_bug.cgi?id=15723
>
> Ok, not an actual reference then, but a false pointer.

Yes. 100 million bytes is 1/40 of all addressable space on 32-bits. 
There only needs to be one 4-byte segment somewhere on the stack that 
points at this, and it won't be collected.

Assuming you have a quite large segment that can't be extended or 
collected (due to false pointer), this means you have to allocate 
another large one to satisfy the next allocation (which then could be 
pinned). And it gets worse from there.

-Steve


More information about the Digitalmars-d-learn mailing list