From e5e0752c101eb2e058850f3bff1f74c254d2746b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20O=2E=20Sel=C3=A5sdal?= Date: Sun, 21 Jun 2026 23:50:16 +0200 Subject: [PATCH] Wrap malloc --- src/platform.c | 28 ++++++++++++++++++++++++++++ src/platform.h | 4 ++++ 2 files changed, 32 insertions(+) diff --git a/src/platform.c b/src/platform.c index 4c1b8a8..36ca78a 100644 --- a/src/platform.c +++ b/src/platform.c @@ -23,6 +23,34 @@ void platform_free(void *mem) free(mem); } + +static void *platform_allocator_func(Allocator *allocator, AllocOperation operation , void *memory, U32 size, U32 align) +{ + switch (operation) { + case Alloc_Op_Aligned: + return aligned_alloc(size, align); + + case Alloc_Op_Free: // can't free/Free_all from an marena + free(memory); + return NULL; + + case Alloc_Op_Free_All: + free(memory);; + return NULL; + } + + Assert(false); +} + +Allocator platform_allocator(void) +{ + Allocator allocator = {}; + allocator.op_func_ptr = platform_allocator_func; + allocator.data = NULL; + + return allocator; +} + void *memory_allocate_and_commit(size_t size) { Assert(IsPageAligned(size)); diff --git a/src/platform.h b/src/platform.h index 54c3700..f7932dd 100644 --- a/src/platform.h +++ b/src/platform.h @@ -1,7 +1,11 @@ #pragma once #include +#include "base_core.h" void *platform_malloc(size_t size); +void platform_free(void *mem); +Allocator platform_allocator(void); + U32 platform_page_size(void); // Memory functions expect mem and size to be page aligned