1 2 3 #ifdef DEBUG 4 void *debug_malloc(size_t size, char *file, int line); 5 void debug_free(void *ptr, char *file, int line); 6 void debug_postmortem(void); 7 void free_foreign(void *ptr); 8 void *malloc_foreign(size_t size); 9 void *copy_and_free_for_malloc_debug(void *ptr, size_t size); 10 char *copy_and_free_string_for_malloc_debug(char* str); 11 12 13 #define free(ptr) debug_free(ptr,__FILE__,__LINE__) 14 #define mymalloc(size) debug_malloc(size, __FILE__, __LINE__) 15 #else 16 #define free_foreign free 17 #define malloc_foreign malloc 18 #define copy_and_free_for_malloc_debug(ptr,size) (ptr) 19 #define copy_and_free_string_for_malloc_debug(str) (str) 20 #define debug_postmortem() do_nothing(0) 21 22 23 #endif 24