#include #include #include #include #define ARENA_MEMORY_ALIGN 8 typedef struct Chunk{ size_t size; size_t offset; unsigned char *buffer; struct Chunk *next; }Chunk; typedef struct{ Chunk *current; Chunk *first; }Arena; Arena arena_create(size_t); void* arena_alloc(Arena*, size_t); void arena_free(Arena*); void arena_print(Arena*); Chunk* arena_chunk_create(size_t); void arena_chunk_free(Chunk*); void* arena_chunk_alloc(Arena*, Chunk*, size_t); char* arena_strdup(Arena*, const char*);