#include Memory memory_init(uint8_t *data , size_t size) { Memory mem = { .data = data, .size = size, .offset = 0, }; return mem; } static void * alloc(Memory *m, size_t size, size_t align) { uintptr_t ptr = (uintptr_t)m->data; size_t alloc_size = size; if((ptr % align) != 0) alloc_size += align - (ptr % align); void *p = NULL; if((m->size - m->offset) >= alloc_size){ p = m->data+m->offset+alloc_size-size; m->offset += alloc_size; memset(p, 0, size); } return p; } Aplwc * memory_alloc_aplwc(Memory *m) { Aplwc *p = alloc(m, sizeof(Aplwc), alignof(Aplwc)); return p; } void memory_free_aplwc(Memory *m, Aplwc *p) { UNUSED_PARAMETER(m); UNUSED_PARAMETER(p); }