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.
pure nothrow @nogc @safe void[] allocate(size_t) shared;
Always returns null.
pure nothrow @nogc @safe void[] alignedAllocate(size_t, uint) shared;
Always returns null.
pure nothrow @nogc @safe void[] allocateAll() shared;
Always returns null.
pure nothrow @nogc @safe bool expand(ref void[] b, size_t s) shared;

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

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

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

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

Precondition b is null

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