#pragma once #include #include #include "types.hpp" #ifdef USE_FTB_MALLOC namespace Ftb_Malloc_Stats { u32 malloc_calls = 0; u32 free_calls = 0; u32 realloc_calls = 0; u32 calloc_calls = 0; u32 alloca_calls = 0; } #define ftb_malloc(size) (++Ftb_Malloc_Stats::malloc_calls, malloc(size)) #define ftb_free(ptr) (++Ftb_Malloc_Stats::free_calls, free(ptr)) #define ftb_realloc(ptr, size) (++Ftb_Malloc_Stats::realloc_calls, realloc(ptr, size)) #define ftb_calloc(num, size) (++Ftb_Malloc_Stats::calloc_calls, calloc(num, size)) #define ftb_alloca(size) (++Ftb_Malloc_Stats::alloca_calls, alloca(size)) void print_malloc_stats() { printf("\n" "Malloc Stats:\n" "-------------\n" " ftb_malloc calls: %u\n" " ftb_free calls: %u\n" " ftb_realloc calls: %u\n" " ftb_calloc calls: %u\n" " ftb_alloca calls: %u\n" , Ftb_Malloc_Stats::malloc_calls, Ftb_Malloc_Stats::free_calls, Ftb_Malloc_Stats::realloc_calls, Ftb_Malloc_Stats::calloc_calls, Ftb_Malloc_Stats::alloca_calls); } #else # define ftb_malloc malloc # define ftb_realloc realloc # define ftb_calloc calloc # define ftb_free free # define ftb_alloca alloca #endif