Allocates memory either off of the free list or from the parent allocator.
If n is within [min, max] or if the free list is unchecked
(minSize == 0 && maxSize == size_t.max), then the free list is
consulted first. If not empty (hit), the block at the front of the free
list is removed from the list and returned. Otherwise (miss), a new block
of max bytes is allocated, truncated to n bytes, and returned.
Allocates memory either off of the free list or from the parent allocator. If n is within [min, max] or if the free list is unchecked (minSize == 0 && maxSize == size_t.max), then the free list is consulted first. If not empty (hit), the block at the front of the free list is removed from the list and returned. Otherwise (miss), a new block of max bytes is allocated, truncated to n bytes, and returned.