Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

std.experimental.allocator.building_blocks.null_allocator

struct NullAllocator;
NullAllocator is an emphatically empty implementation of the allocator interface. Although it has no direct use, it is useful as a "terminator" in composite allocators.
enum uint alignment;
NullAllocator advertises a relatively large alignment equal to 64 KB. This is because NullAllocator never actually needs to honor this alignment and because composite allocators using NullAllocator shouldn't be unnecessarily constrained.
shared void[] allocate(size_t);
Always returns null.
shared void[] alignedAllocate(size_t, uint);
Always returns null.
shared void[] allocateAll();
Always returns null.
shared pure nothrow @nogc @safe bool expand(ref void[] b, size_t s);

shared pure nothrow @nogc bool reallocate(ref void[] b, size_t);

shared pure nothrow @nogc bool alignedReallocate(ref void[] b, size_t, uint);
These methods return false.

Precondition b is null. This is because there is no other possible legitimate input.

shared const pure nothrow @nogc @safe Ternary owns(const void[]);
Returns Ternary.no.
shared const pure nothrow @nogc @safe Ternary resolveInternalPointer(const void*, ref void[]);
Returns Ternary.no.
shared pure nothrow @nogc bool deallocate(void[] b);
No-op.

Precondition b is null

shared pure nothrow @nogc @safe bool deallocateAll();
No-op.
shared const pure nothrow @nogc @safe Ternary empty();
Returns Ternary.yes.
static shared NullAllocator instance;
Returns the shared global instance of the NullAllocator.