libcute 0.1
Loading...
Searching...
No Matches
arenaallocator.h
Go to the documentation of this file.
1#pragma once
2
5#include "memory/allocator.h"
6#include <stddef.h>
7
9#define CU_ARENA_CHUNK_SIZE 4096
10
13struct cu_ArenaAllocator_Chunk {
14 struct cu_ArenaAllocator_Chunk *prev;
15 size_t size;
16 size_t used;
17 unsigned char data[];
18};
19
21struct cu_ArenaAllocator_Header {
22 struct cu_ArenaAllocator_Chunk *chunk;
23 size_t prev_offset;
24};
28typedef struct {
30 struct cu_ArenaAllocator_Chunk *current;
31 size_t chunkSize;
33
35typedef struct {
36 size_t chunkSize;
37 cu_Allocator_Optional backingAllocator;
39
48
void cu_ArenaAllocator_destroy(cu_ArenaAllocator *arena)
Destroy an arena allocator and free all chunks.
Definition arenaallocator.c:204
cu_Allocator cu_Allocator_ArenaAllocator(cu_ArenaAllocator *arena, cu_ArenaAllocator_Config config)
Create an arena allocator using the given configuration.
Definition arenaallocator.c:176
Definition allocator.h:24
Definition arenaallocator.h:35
cu_Allocator_Optional backingAllocator
Definition arenaallocator.h:37
size_t chunkSize
Definition arenaallocator.h:36
Definition arenaallocator.h:28
struct cu_ArenaAllocator_Chunk * current
Definition arenaallocator.h:30
size_t chunkSize
Definition arenaallocator.h:31
cu_Allocator backingAllocator
Definition arenaallocator.h:29