Derive-C
Loading...
Searching...
No Matches
staticbump.c
Go to the documentation of this file.
1
2#include <stdio.h>
3
4#define CAPACITY 1024
5#define NAME foopool
7
9
11 foopool_buffer buf;
12 foopool pool = foopool_new(&buf);
13
14 void* ptr1 = foopool_malloc(&pool, 100);
15 ASSERT(ptr1 != NULL);
16
17 void* ptr2 = foopool_malloc(&pool, 200);
18 ASSERT(ptr2 != NULL);
19
20 // Check the used size
21 size_t used = foopool_get_used(&pool);
22 ASSERT(used == 100 + 200 + foopool_metadata_size * 2);
23
24 foopool_free(&pool, ptr1);
25
26 // reallocated in place
27 void* ptr2_realloc = foopool_realloc(&pool, ptr2, 300);
28 ASSERT(ptr2_realloc == ptr2);
29
30 foopool_free(&pool, ptr2_realloc);
31
32 foopool_clear(&pool);
33
34 // we can allocate at capacity:
35 void* ptr3 = foopool_malloc(&pool, 1024 - foopool_metadata_size);
36 ASSERT(ptr3 != NULL);
37 foopool_free(&pool, ptr3);
38 foopool_clear(&pool);
39
40 // But we cannot allocate more than capacity
41 void* ptr4 = foopool_malloc(&pool, 1024 - foopool_metadata_size + 1);
42 ASSERT(ptr4 == NULL);
43 ASSERT(foopool_get_used(&pool) == 0);
44}
45
#define ASSERT(expr,...)
Definition macros.h:42
void foopool_raw_example()
Definition staticbump.c:10
int main()
Definition staticbump.c:46