92 if (alignment == 0 || (alignment & (alignment - 1)) != 0) {
106 if (aligned_offset < arena->current_offset) {
112 if (SIZE_MAX - size < aligned_offset || aligned_offset + size >
arena->
capacity) {
131 if (size > 0 && num > SIZE_MAX / size) {
137 size_t total_size = num * size;
142 memset(ptr, 0, total_size);
infix_arena_t * arena
Definition 005_layouts.c:57
#define infix_free
A macro for the memory deallocation function.
Definition infix.h:280
void infix_arena_destroy(infix_arena_t *arena)
Frees an entire memory arena and all objects allocated within it.
Definition arena.c:68
void * infix_arena_calloc(infix_arena_t *arena, size_t num, size_t size, size_t alignment)
Allocates a zero-initialized block of memory from the arena.
Definition arena.c:129
void * infix_arena_alloc(infix_arena_t *arena, size_t size, size_t alignment)
Allocates a block of memory from the arena with a specific alignment.
Definition arena.c:86
#define infix_malloc
A macro for the memory allocation function used by the library.
Definition infix.h:250
infix_arena_t * infix_arena_create(size_t initial_size)
Creates and initializes a new memory arena.
Definition arena.c:41
Declarations for internal-only functions, types, and constants.
static size_t _infix_align_up(size_t value, size_t alignment)
Definition infix_internals.h:383
Definition infix_internals.h:130
char * buffer
The pointer to the large, pre-allocated memory block.
Definition infix_internals.h:131
bool error
A sticky flag that is set if any allocation from this arena fails.
Definition infix_internals.h:134
size_t capacity
The total size of the buffer in bytes.
Definition infix_internals.h:132
size_t current_offset
The high-water mark; the offset of the next free byte.
Definition infix_internals.h:133