Added basic arena implementation w/ linear allocator

This commit is contained in:
kilroy
2025-11-30 22:37:18 -05:00
parent 767085b160
commit 5976d6b5a6
2 changed files with 96 additions and 0 deletions

27
include/arena.h Normal file
View File

@@ -0,0 +1,27 @@
#ifndef ARENA_H
#define ARENA_H
#include <stdint.h>
typedef struct {
uint8_t *buffer;
size_t capacity;
size_t offset;
} Arena;
Arena *ArenaInit(size_t capacity);
void ArenaDestroy(Arena *arena);
void *ArenaAlloc(Arena *arena, size_t size);
void *ArenaAllocZero(Arena *arena, size_t size);
void ArenaFree(Arena *arena, size_t size);
void ArenaFreeAndNullify(Arena *arena, size_t size, void **ptrAddress);
// Fundamentally returns how many bytes have been allocated
size_t ArenaGetOffset(Arena *arena);
void ArenaSetOffsetBack(Arena *arena, size_t offset);
void ArenaClear(Arena *arena);
#endif // ARENA_H