00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef ROOT_TMemStatHook
00017 #define ROOT_TMemStatHook
00018
00019 #if defined(__APPLE__)
00020 #ifndef __CINT__
00021 #include <malloc/malloc.h>
00022 #endif
00023 typedef void (*zoneMallocHookFunc_t)(void *ptr, size_t size);
00024 typedef void (*zoneFreeHookFunc_t)(void *ptr);
00025 #endif
00026
00027 class TMemStatHook {
00028 public:
00029 #if !defined(__APPLE__)
00030
00031
00032
00033 typedef void*(*MallocHookFunc_t)(size_t size, const void *caller);
00034 typedef void (*FreeHookFunc_t)(void *ptr, const void *caller);
00035
00036 static MallocHookFunc_t GetMallocHook();
00037 static FreeHookFunc_t GetFreeHook();
00038 static void SetMallocHook(MallocHookFunc_t p);
00039 static void SetFreeHook(FreeHookFunc_t p);
00040 #else
00041
00042
00043
00044 static void trackZoneMalloc(zoneMallocHookFunc_t pm, zoneFreeHookFunc_t pf);
00045 static void untrackZoneMalloc();
00046 #endif
00047 };
00048
00049 #endif
00050