Derive-C
Loading...
Searching...
No Matches
staticbump.c File Reference
#include <stdio.h>
#include <derive-c/core/prelude.h>
#include <derive-c/alloc/staticbump/template.h>

Go to the source code of this file.

Macros

#define CAPACITY   1024
#define NAME   foopool

Functions

void foopool_raw_example ()
int main ()

Macro Definition Documentation

◆ CAPACITY

#define CAPACITY   1024

Definition at line 5 of file staticbump.c.

◆ NAME

#define NAME   foopool

Definition at line 6 of file staticbump.c.

Function Documentation

◆ foopool_raw_example()

void foopool_raw_example ( )

Definition at line 9 of file staticbump.c.

9 {
10 foopool_buffer buf;
11 foopool pool = foopool_new(&buf);
12
13 void* ptr1 = foopool_malloc(&pool, 100);
14 DC_ASSERT(ptr1 != NULL);
15
16 void* ptr2 = foopool_malloc(&pool, 200);
17 DC_ASSERT(ptr2 != NULL);
18
19 // Check the used size
20 size_t used = foopool_get_used(&pool);
21 DC_ASSERT(used == 100 + 200 + foopool_metadata_size * 2);
22
23 foopool_free(&pool, ptr1);
24
25 // reallocated in place
26 void* ptr2_realloc = foopool_realloc(&pool, ptr2, 300);
27 DC_ASSERT(ptr2_realloc == ptr2);
28
29 foopool_free(&pool, ptr2_realloc);
30
31 foopool_clear(&pool);
32
33 // we can allocate at capacity:
34 void* ptr3 = foopool_malloc(&pool, 1024 - foopool_metadata_size);
35 DC_ASSERT(ptr3 != NULL);
36 foopool_free(&pool, ptr3);
37 foopool_clear(&pool);
38
39 // But we cannot allocate more than capacity
40 void* ptr4 = foopool_malloc(&pool, 1024 - foopool_metadata_size + 1);
41 DC_ASSERT(ptr4 == NULL);
42 DC_ASSERT(foopool_get_used(&pool) == 0);
43}
#define DC_ASSERT(expr,...)
Definition panic.h:36

◆ main()