// Creates a scratch memory pool with set blocksize, already allocated memory chunk could be provided via pExternalMem, where nAllocatedBlockSize
// is a size of an allocated memory, passing the memory of size less than sizeof(MemoryBlock_t) bytes (required for the header) might lead to OOB access.
// If bSearchAllBlocks is true, it would search all the blocks to find free memory to use, alternatively it would allocate new block if
// Initializes scratch memory pool with set blocksize, already allocated memory chunk could be provided via pExternalMem, where nAllocatedBlockSize
// is a size of an allocated memory, passing the memory of size less than sizeof(MemoryBlock_t) bytes (required for the header) might lead to OOB access.
// If bSearchAllBlocks is true, it would search all the blocks to find free memory to use, alternatively it would allocate new block if
// Counts the overall allocated size of all the chunks within this memory pool
DLL_CLASS_IMPORTsize_tAllocSize()const;
// Counts the overall amount of chunks allocated within this memory pool
DLL_CLASS_IMPORTsize_tAllocationCount()const;
// Counts the overall free memory available across all the allocated chunks within this memory pool
DLL_CLASS_IMPORTsize_tTotalMemFree()const;
// Frees all the allocated chunks, leaving only one active chunk
DLL_CLASS_IMPORTvoidFreeAll();
// Frees all the allocated chunks that lead to the mark, would result in a crash if the mark doesn't point to any of the chunks within this memory pool
// Allocates new chunk of memory, if nSizeInBytes > (m_nBlockSize / 2) the allocated chunk would be allocated as is without free memory in it (even if it exceeds the m_nBlockSize).