Defined in omni/structuredlog/JsonTree.h

class BlockAllocator : public omni::structuredlog::Allocator

An implementation of Allocator which will just allocate from a preallocated block of memory and never deallocate memory until the full preallocated block is freed.

This is useful for something like a structured log event, where the required size of the tree can be preallocated.

Public Functions

inline BlockAllocator(void *block, size_t len)

Create the allocator from a preallocated block.

  • block[in] The block of memory to allocate from.

  • len[in] The length of block in bytes.

inline virtual void *alloc(size_t size) override

Allocated memory.


This should be overwritten by custom memory allocators to use another allocation mechanism.


size[in] The number of bytes to allocate.


The allocated memory.


nullptr if memory was not available.

inline virtual void dealloc(void *mem) override

Deallocate a previously allocated block.


mem[in] A block previously allocated by alloc().

Public Static Functions

static inline size_t fixupAlignment(size_t size)

Round a size up to be aligned to kAlignment.


size[in] The size to align.


size rounded up to the next multiple of kAlignment.

Public Static Attributes

static constexpr size_t kAlignment = alignof(void*)

The alignment that each allocation must be.