refactor(allocator): added header to memory blocks

This commit is contained in:
Mineplay 2025-04-11 17:26:35 -05:00
parent 776bee499d
commit 1e653f67c7

View file

@ -29,6 +29,11 @@
#include <sys/mman.h>
#endif
typedef struct HallocyMemoryHeader {
size_t size;
struct HallocyMemoryHeader *next;
} HallocyMemoryHeader;
static size_t page_size = 0;
void *hallocy_malloc(size_t size) {
@ -43,13 +48,16 @@ void *hallocy_malloc(size_t size) {
#endif
}
size_t aligned_size = page_size * ((size / page_size) + 1);
void *memory_pointer = NULL;
size_t aligned_size = page_size * (((size + sizeof(HallocyMemoryHeader)) / page_size) + 1);
HallocyMemoryHeader *memory_pointer = NULL;
#if defined(_WIN32)
memory_pointer = VirtualAlloc(NULL, aligned_size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
memory_pointer = (HallocyMemoryHeader*)VirtualAlloc(NULL, aligned_size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
#elif defined(__linux__)
memory_pointer = mmap(NULL, aligned_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
memory_pointer = (HallocyMemoryHeader*)mmap(NULL, aligned_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
#endif
return memory_pointer;
memory_pointer->size = aligned_size;
memory_pointer->next = NULL;
return (void*)(memory_pointer + 1);
}