30 lines
564 B
C
30 lines
564 B
C
#include <stddef.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stdbool.h>
|
|
|
|
#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*);
|