51 lines
1.2 KiB
C
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 = (LBlockHeader *)allocator->base; 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);
|
|
}
|