#include "mem_libc.h" #include "aliases.h" #include "mem_allocator.h" #include #include internal void *mem_libc_alloc(u64 size, void *alloc_obj); internal void *mem_libc_alloc_aligned(u64 size, u64 alignment, void *alloc_obj); internal void *mem_libc_realloc(void *ptr, u64 size, void *alloc_obj); internal void mem_libc_free(void **ptr, void *alloc_obj); Allocator wapp_mem_libc_allocator(void) { return (Allocator){ .obj = NULL, .alloc = mem_libc_alloc, .alloc_aligned = mem_libc_alloc_aligned, .realloc = mem_libc_realloc, .realloc_aligned = NULL, .free = mem_libc_free, }; } internal void *mem_libc_alloc(u64 size, void *alloc_obj) { return calloc(1, size); } internal void *mem_libc_alloc_aligned(u64 size, u64 alignment, void *alloc_obj) { void *output = aligned_alloc(alignment, size); if (output) { memset(output, 0, size); } return output; } internal void *mem_libc_realloc(void *ptr, u64 size, void *alloc_obj) { return realloc(ptr, size); } internal void mem_libc_free(void **ptr, void *alloc_obj) { if (!ptr || !(*ptr)) { return; } free(*ptr); *ptr = NULL; }