Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 

44 rader
1.3 KiB

  1. #pragma once
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include "types.hpp"
  5. #ifdef USE_FTB_MALLOC
  6. namespace Ftb_Malloc_Stats {
  7. u32 malloc_calls = 0;
  8. u32 free_calls = 0;
  9. u32 realloc_calls = 0;
  10. u32 calloc_calls = 0;
  11. u32 alloca_calls = 0;
  12. }
  13. #define ftb_malloc(size) (++Ftb_Malloc_Stats::malloc_calls, malloc(size))
  14. #define ftb_free(ptr) (++Ftb_Malloc_Stats::free_calls, free(ptr))
  15. #define ftb_realloc(ptr, size) (++Ftb_Malloc_Stats::realloc_calls, realloc(ptr, size))
  16. #define ftb_calloc(num, size) (++Ftb_Malloc_Stats::calloc_calls, calloc(num, size))
  17. #define ftb_alloca(size) (++Ftb_Malloc_Stats::alloca_calls, alloca(size))
  18. void print_malloc_stats() {
  19. printf("\n"
  20. "Malloc Stats:\n"
  21. "-------------\n"
  22. " ftb_malloc calls: %u\n"
  23. " ftb_free calls: %u\n"
  24. " ftb_realloc calls: %u\n"
  25. " ftb_calloc calls: %u\n"
  26. " ftb_alloca calls: %u\n" ,
  27. Ftb_Malloc_Stats::malloc_calls,
  28. Ftb_Malloc_Stats::free_calls,
  29. Ftb_Malloc_Stats::realloc_calls,
  30. Ftb_Malloc_Stats::calloc_calls,
  31. Ftb_Malloc_Stats::alloca_calls);
  32. }
  33. #else
  34. # define ftb_malloc malloc
  35. # define ftb_realloc realloc
  36. # define ftb_calloc calloc
  37. # define ftb_free free
  38. # define ftb_alloca alloca
  39. #endif