std.allocator.allocate(0) -> return null or std.allocator.allocate(1)?

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Sat May 16 09:34:02 PDT 2015


On 5/16/15 2:07 AM, Walter Bright wrote:
> On 5/15/2015 6:38 PM, Andrei Alexandrescu wrote:
>> Yeh, failed allocations are relatively frequent within the framework
>> components.
>
> I find this surprising.

Consider a fixed-length buffer fronting a general allocator, one of the 
simplest and most useful compositions of allocators, which I call 
FallbackAllocator:

https://github.com/andralex/phobos/blob/allocator/std/experimental/allocator/fallback_allocator.d

Once the memory in the front buffer is exhausted, the fallback allocator 
starts getting used. The correct way to handle the choice in the 
composer is to first try the front, and if it returns null, defer to the 
fallback.

Many other allocators follow similar patterns.


Andrei


More information about the Digitalmars-d mailing list