В образовательных целях решил разобраться как работают аллокаторы, возник не большой вопрос, допустип я хочу сделать самый простой аллокатор, который будет выделать память линейно:
typedef struct _LinearBuffer {
	uint8_t *mem;       /*!< Pointer to buffer memory. */
	uint32_t totalSize; /*!< Total size in bytes. */
	uint32_t offset;    /*!< Offset. */
} LinearBuffer;
/* non-aligned allocation from linear buffer. */
void* linearBufferAlloc(LinearBuffer* buf, uint32_t size) {
	//
	if (!buf | !size) return 0;
	
	uint32_t newOffset = buf->offset + size;
	
	if (newOffset <= buf->totalSize) {
		void* ptr = buf->mem + buf->offset;
		buf->offset = newOffset;
		return ptr;
	}
	
	return 0; /* out of memory */
}
здесь мне все понятно, кроме одного, как мне использовать буффер, и каким должно быть значение totalSize, получается что titalSize - это размер моей виртуальной памяти, и для всех аллокаторов он одинаков? или же разбивать мою виртуальную память на буфферы определенного размера?

