/* wrapper functions for system malloc -- keep malloc stats. Truilkan@TMI - 92/04/17 */ /* config.h gets INLINE */ #include "config.h" #include "lint.h" #include "interpret.h" #ifdef NeXT #include <stdlib.h> #endif typedef struct stats_s { unsigned int free_calls, alloc_calls, realloc_calls; } stats_t; static stats_t stats; void wrappedmalloc_init() { stats.free_calls = 0; stats.alloc_calls = 0; stats.realloc_calls = 0; } INLINE void *wrappedrealloc(ptr,size) void *ptr; int size; { stats.realloc_calls++; return (void *)realloc(ptr,size); } INLINE void *wrappedmalloc(size) int size; { stats.alloc_calls++; return (void *)malloc(size); } INLINE void *wrappedcalloc(nitems,size) int nitems; int size; { stats.alloc_calls++; return (void *)calloc(nitems,size); } INLINE void wrappedfree(ptr) void *ptr; { stats.free_calls++; free(ptr); } void dump_malloc_data() { add_message("using wrapped malloc:\n\n"); add_message("#alloc calls: %10lu\n",stats.alloc_calls); add_message("#free calls: %10lu\n",stats.free_calls); add_message("#alloc - #free: %10lu\n", stats.alloc_calls - stats.free_calls); add_message("#realloc calls: %10lu\n",stats.realloc_calls); }