Arena showcase...

This commit is contained in:
xolatile 2024-11-18 05:19:39 -05:00
parent 897edcf92e
commit 49c6d1412b
3 changed files with 13 additions and 9 deletions

View File

@ -35,8 +35,6 @@ extern void * arena_allocate(size_t size);
#endif
#ifdef ARENA_IMPLEMENTATION
#define arena_block_allocation_size (13)
//~typedef struct {
//~char * buffer;
//~size_t count;
@ -44,6 +42,10 @@ extern void * arena_allocate(size_t size);
//~void * next;
//~} arena_data;
#ifndef ARENA_BLOCK_ALLOCATION_SIZE
#define ARENA_BLOCK_ALLOCATION_SIZE (1024)
#endif
static arena_data * arena;
static int open_arena = 0;
@ -104,13 +106,13 @@ void * arena_allocate(size_t size) {
arena = calloc(1, sizeof(*arena));
arena->block_count++;
arena->block_array = realloc(arena->block_array, arena->block_count * sizeof(*arena->block_array));
arena->block_array[arena->block_count - 1] = arena_init(arena_block_allocation_size);
arena->block_array[arena->block_count - 1] = arena_init(ARENA_BLOCK_ALLOCATION_SIZE);
}
if (arena->block_array[arena->block_count - 1]->count + size >= arena->block_array[arena->block_count - 1]->capacity) {
arena->block_count++;
arena->block_array = realloc(arena->block_array, arena->block_count * sizeof(*arena->block_array));
arena->block_array[arena->block_count - 1] = arena_init(arena_block_allocation_size);
arena->block_array[arena->block_count - 1] = arena_init(ARENA_BLOCK_ALLOCATION_SIZE);
}
size_t spot = arena->block_array[arena->block_count - 1]->count;

Binary file not shown.

View File

@ -1,4 +1,6 @@
#define ARENA_IMPLEMENTATION
#define ARENA_BLOCK_ALLOCATION_SIZE (13)
#include "arena.h"
#include <stdio.h>
@ -19,18 +21,18 @@ int main (void) {
printf("%s", c);
char * d;
d = arena_allocate (6);
strcpy(d, "Heyo\n");
d = arena_allocate (10);
strcpy(d, "Holy crap\n");
printf("%s", d);
char * e;
e = arena_allocate (6);
strcpy(e, "Heyo\n");
e = arena_allocate (8);
strcpy(e, "Serbia\n");
printf("%s", e);
char * f;
f = arena_allocate (6);
strcpy(f, "Heyo\n");
strcpy(f, "Base\n");
printf("%s", f);
return (0);