Arena
Arena Allocator implementation in pure C as an stb-style single-file library.
Install / Use
/learn @tsoding/ArenaREADME
Arena Allocator
Arena Allocator implementation in pure C as an stb-style single-file library.
I just caught myself implementing this over and over again in my projects, so I decided to turn it into a copy-pastable library similar to sv
Quick Start
The truly reusable code is the one that you can simply copy-paste.
The library itself does not require any special building. You can simple copy-paste ./arena.h to your project and #include it.
#define ARENA_IMPLEMENTATION
#include "arena.h"
static Arena default_arena = {0};
static Arena temporary_arena = {0};
static Arena *context_arena = &default_arena;
void *context_alloc(size_t size)
{
assert(context_arena);
return arena_alloc(context_arena, size);
}
int main(void)
{
// Allocate stuff in default_arena
context_alloc(64);
context_alloc(128);
context_alloc(256);
context_alloc(512);
// Allocate stuff in temporary_arena;
context_arena = &temporary_arena;
context_alloc(64);
context_alloc(128);
context_alloc(256);
context_alloc(512);
// Deallocate everything at once
arena_free(&default_arena);
arena_free(&temporary_arena);
return 0;
}
Related Skills
node-connect
341.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
341.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.4kCommit, push, and open a PR
