No Description

Alexey Kutepov ab625dd3ac Merge pull request #10 from Pecora0/master 7 months ago
examples ab625dd3ac Merge pull request #10 from Pecora0/master 7 months ago
thirdparty 93f142fe38 [010_universal_code_wasm_x86_64] Compile to wasm64 9 months ago
LICENSE 16f03c0e80 Ready. Set. Go! 3 years ago
README.md 9e2c054956 The truly reusable code is the one that you can simply copy-paste. 3 years ago
arena.h ab625dd3ac Merge pull request #10 from Pecora0/master 7 months ago

README.md

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;
}