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.


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 bool expand(ref void[] b, size_t s);

shared bool reallocate(ref void[] b, size_t);

shared 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 Ternary owns(void[]);
shared const void[] resolveInternalPointer(void*);
Returns null.
shared bool deallocate(void[] b);

Precondition: b is null

shared bool deallocateAll();
shared const Ternary empty();
Returns Ternary.yes.
static shared NullAllocator instance;
Returns the shared global instance of the NullAllocator.