Constructs a region backed by a user-provided store. Assumes the memory was allocated with ParentAllocator (if different from `NullAllocator`).
If ParentAllocator is not `NullAllocator` and defines deallocate, the region defines a destructor that uses ParentAllocator.deallocate to free the memory chunk.
Alignment offered.
Allocates n bytes of memory aligned at alignment a.
Allocates n bytes of memory. The allocation is served by atomically incrementing a pointer which keeps track of the current used space.
Deallocates b. This works only if b was obtained as the last call to allocate; otherwise (i.e. another allocation has occurred since) it does nothing.
Returns Ternary.yes if no memory has been allocated in this region, Ternary.no otherwise. (Never returns Ternary.unknown.)
Rounds the given size to a multiple of the alignment
Queries whether b has been allocated with this region.
The parent allocator. Depending on whether ParentAllocator holds state or not, this is a member variable or an alias for ParentAllocator.instance.
The threadsafe version of the Region allocator. Allocations and deallocations are lock-free based using core.atomic.cas.