61 lines
1.5 KiB
C
61 lines
1.5 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#ifdef DEBUG
|
|
#define realloc(p, s) (printf("%s:%d:%s: realloc(%p, %lu)\n",\
|
|
__FILE__, __LINE__, __func__, (p), (s)), realloc((p), (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)
|
|
{
|
|
Arena a = {0};
|
|
|
|
printf("------ small alloc ------\n");
|
|
|
|
arena_alloc(&a, 100);
|
|
arena_alloc(&a, 100);
|
|
arena_alloc(&a, 100);
|
|
arena_alloc(&a, 100);
|
|
arena_print(a);
|
|
|
|
printf("\n=========================================================\n\n");
|
|
printf("------ big alloc ------\n");
|
|
|
|
arena_alloc(&a, 8000);
|
|
arena_print(a);
|
|
|
|
printf("\n=========================================================\n\n");
|
|
printf("------ reset ------\n");
|
|
|
|
arena_reset(&a);
|
|
arena_print(a);
|
|
|
|
printf("\n=========================================================\n\n");
|
|
printf("------ allocs after reset ------\n");
|
|
|
|
arena_alloc(&a, 300);
|
|
arena_alloc(&a, 400);
|
|
arena_alloc(&a, 9000);
|
|
arena_print(a);
|
|
|
|
arena_free(&a);
|
|
return 0;
|
|
}
|