#include #include #ifdef DEBUG #define malloc(s) (printf("%s:%d:%s: malloc(%lu)\n",\ __FILE__, __LINE__, __func__, (s)), malloc((s))); #define free(p) (printf("%s:%d:%s: free(%p)\n",\ __FILE__, __LINE__, __func__, (p)), free((p))); #endif // DEBUG #define ARENA_IMPLEMENTATION #include "arena.h" void arena_print(Arena arena) { int i = 0; for (Arena_Region *cur = arena.head; cur != NULL; cur = cur->next) { printf("Arena_Region #%d:\n", ++i); printf(" count = %ld\n", cur->count); printf(" capacity = %ld\n", cur->capacity); printf(" next = %p\n", cur->next); printf(" data = %p\n", cur->data); } } int main(void) { printf("Alignment: %zu\n", ARENA_ALIGNMENT); Arena a = {0}; arena_alloc(&a, 4012); arena_alloc(&a, 100); arena_alloc(&a, 2301); arena_alloc(&a, 4015); arena_alloc(&a, 10000); arena_reset(&a); arena_alloc(&a, 1000); arena_print(a); arena_free(&a); return 0; }