Derive-C
Loading...
Searching...
No Matches
staticbump.c
Go to the documentation of this file.
1
2#include <stdio.h>
4
5#define CAPACITY 1024
6#define NAME foopool
8
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}
44
#define DC_ASSERT(expr,...)
Definition panic.h:36
void foopool_raw_example()
Definition staticbump.c:9
int main()
Definition staticbump.c:45