extern "C" { #include #include #include #include "trace.hpp" } #ifdef _OBTRACE_ON #include "obtrace.hpp" #endif #include "memtrace.hpp" // now redefine new #ifdef _TRACE_ON #define new new(__FILE__,__LINE__,REPORT_TRACE(3)) #else #define new new(__FILE__,__LINE__,TRACELOC) #endif #ifdef _OBTRACE_ON class XClass : private OBTRACE #else class XClass #endif { public: XClass() { value=0; } XClass(int i) { value = new int; *value = i; } ~XClass() { if (value) delete value; } #ifdef _OBTRACE_ON // method ReportAll --------------------------------------- static void ReportAll() { OBTRACE::ReportAll(stdout,"XClass"); }//end ReportAll // method ReportCount -------------------------------------- static void ReportCount() { OBTRACE::ReportCount(stdout,"XClass"); }//end ReportCount #endif // _OBTRACE_ON protected: int* value; };//end class XClass #ifdef _OBTRACE_ON char* OBTRACE::init=NULL; #endif XClass ox1(1); // functio doit1 ------------------------------------------------- int doit1() { TRACE(doit1) XClass* ox2 = new XClass(2); //delete ox2; RETURN1(1) }//end doit1 // function doit2 ------------------------------------------------ void doit2() { TRACE(doit2) XClass ox3(3); XClass* ox4 = new XClass(4); doit1(); //delete ox4; #ifdef _OBTRACE_ON XClass::ReportCount(); #endif RETURN }//end doit2 void Report() { #ifdef _OBTRACE_ON XClass::ReportAll(); #endif new_report(stdout); } // function main ----------------------------------------------- int main() { TRACE(main) #ifdef _OBTRACE_ON atexit(Report); #endif doit2(); RETURN1(0) }//end main