#ifndef _util_memdebug_h #define _util_memdebug_h #ifndef __rcs_id__ #ifndef __rcs_id_util_memdebug_h__ #define __rcs_id_util_memdebug_h__ static const char __rcs_id_util_memdebug_h[] = "$Id: memdebug.h,v 1.1 2000/01/04 05:31:32 stephensk Exp $"; #endif #endif /* __rcs_id__ */ #ifdef MEMDEBUG #include /* size_t */ #ifdef malloc #undef malloc #endif #define malloc(X) memdebug_malloc_(X,__FILE__,__LINE__) #ifdef realloc #undef realloc #endif #define realloc(X,Y) memdebug_realloc_(X,Y,__FILE__,__LINE__) #ifdef free #undef free #endif #define free(X) memdebug_free_(X,__FILE__,__LINE__) #ifdef valloc #undef valloc #endif #define valloc(X) memdebug_valloc_(X,__FILE__,__LINE__) #ifdef memalign #undef memalign #endif #define memalign(X,Y) memdebug_memalign_(X,Y,__FILE__,__LINE__) #ifdef calloc #undef calloc #endif #define calloc(X,Y) memdebug_calloc_(X,Y,__FILE__,__LINE__) #else #include #endif #ifdef __cplusplus extern "C" { #endif extern size_t memdebug_blocks, memdebug_bytes; /* Current live block/bytes. */ extern size_t memdebug_blocks_total, memdebug_bytes_total; /* Total blocks/bytes allocated since start. */ extern int memdebug_keep_free_blocks; /* Never actually free blocks */ extern int memdebug_log_each_alloc; /* Log each allocation/reallocation/free. */ extern unsigned long memdebug_stop_on_id; extern size_t memdebug_stop_on_size_limit; extern int memdebug_validate_ptrs; extern int memdebug_check_live_always; extern int memdebug_stats_every_checks; /* Versions without line info. */ void *memdebug_malloc(size_t s); void memdebug_free(void *p); void *memdebug_realloc(void *p, size_t s); void *memdebug_calloc(size_t s1, size_t s2); void *memdebug_memalign(size_t s1, size_t s2); void *memdebug_valloc(size_t s); /* C++ support */ void *memdebug_operator_new(size_t s); void memdebug_operator_delete(void *p); void *memdebug_operator_new_A(size_t s); void memdebug_operator_delete_A(void *p); /* Versions with line info. */ void *memdebug_malloc_(size_t s, const char *file, int line); void memdebug_free_(void *p, const char *file, int line); void *memdebug_realloc_(void *p, size_t s, const char *file, int line); void *memdebug_calloc_(size_t s1, size_t s2, const char *file, int line); void *memdebug_memalign_(size_t s1, size_t s2, const char *file, int line); void *memdebug_valloc_(size_t s, const char *file, int line); /* C++ support */ void *memdebug_operator_new_(size_t s, const char *file, int line); void memdebug_operator_delete_(void *p, const char *file, int line); void *memdebug_operator_new_A_(size_t s, const char *file, int line); void memdebug_operator_delete_A_(void *p, const char *file, int line); void memdebug_stats(); #ifdef __cplusplus } #endif #endif