23 #ifndef MEMORYCHECKER_ON 
   24 #define MEMORYCHECKER_ON 
   30 void memchecker_insert_stack(
void* ptr,
char** strings, 
size_t size);
 
   31 void memchecker_remove_stack(
void* ptr);
 
   32 void memory_checker_print_report();
 
   33 void memory_checker_clear_report();
 
   35 inline void* 
operator new(
size_t size) 
throw(std::bad_alloc) {
 
   36   void *ptr = (
void *)malloc(size);
 
   38   void* stack_array[10];
 
   39   size_t stack_size = backtrace(stack_array,10);
 
   40   char** stack_data = backtrace_symbols(stack_array,stack_size);
 
   41   memchecker_insert_stack(ptr,stack_data,stack_size);
 
   46 inline void* 
operator new[](
size_t size) 
throw(std::bad_alloc) {
 
   47   void *ptr = (
void *)malloc(size);
 
   49   void* stack_array[10];
 
   50   size_t stack_size = backtrace(stack_array,10);
 
   51   char** stack_data = backtrace_symbols(stack_array,stack_size);
 
   52   memchecker_insert_stack(ptr,stack_data,stack_size);
 
   57 inline void operator delete(
void *ptr) 
throw() {
 
   58   memchecker_remove_stack(ptr);
 
   62 inline void operator delete[](
void *ptr) 
throw() {
 
   63   memchecker_remove_stack(ptr);
 
   68 #endif // MEMORYCHECKER_ON