Files
lilalloc/test/lalloc_test.c
T
2026-05-11 22:46:43 +02:00

51 lines
1.2 KiB
C

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "lalloc.h"
void debug_alloc(const LAlloc *allocator)
{
puts("--debug start--");
for (LBlockHeader *b = allocator->heap_start; b; b = lblock_from_offset(allocator, b->next)) {
printf("Block size %u free %d prev %u next %u \n", lblock_size(b), lblock_is_free(b), b->prev, b->next);
}
puts("--debug end--");
}
[[gnu::aligned(16)]] char buff[1023];
int main(void)
{
printf("bh size %zu\n", sizeof(LBlockHeader));
#define SZ 64
LAlloc a;
char *ptrs[SZ];
lalloc_init(&a, buff, sizeof(buff));
debug_alloc(&a);
ptrs[0] = lalloc(&a, 1023 - 16 * 2 - 144);
ptrs[1] = lalloc(&a, 80);
ptrs[2] = lalloc(&a, 32);
debug_alloc(&a);
lfree(&a, ptrs[0]);
ptrs[3] = lalloc(&a, 12);
ptrs[4] = lalloc(&a, 12);
debug_alloc(&a);
lfree(&a, ptrs[1]);
lfree(&a, ptrs[2]);
lfree(&a, ptrs[3]);
lfree(&a, ptrs[4]);
for (int i = 0; i < SZ; i++) {
ptrs[i] = lalloc(&a, rand() % 256 + 1);
}
for (int i = 0; i < SZ; i++) {
// if (rand() % 2 == 0) {
lfree(&a, ptrs[i]);
// }
}
debug_alloc(&a);
}