summaryrefslogtreecommitdiff
path: root/3dc/MEM3DCPP.CPP
diff options
context:
space:
mode:
Diffstat (limited to '3dc/MEM3DCPP.CPP')
-rw-r--r--3dc/MEM3DCPP.CPP48
1 files changed, 48 insertions, 0 deletions
diff --git a/3dc/MEM3DCPP.CPP b/3dc/MEM3DCPP.CPP
new file mode 100644
index 0000000..906b589
--- /dev/null
+++ b/3dc/MEM3DCPP.CPP
@@ -0,0 +1,48 @@
+#include "mem3dc.h"
+
+#if DBGMALLOC
+
+#if 1
+
+// try and turn C++ new/delete tracking on such that
+// we can do a malloc dump when the global objects
+// with associated memory allocated is recored, the
+// deallocation is recored, and then a malloc dump
+// is done
+
+// note that some global objects wont have their memory
+// allocations/deallocations in the constructor/destructor
+// tracked through record_malloc/record_free, but since
+// global objects are deconstructed in the reverse order
+// from construction, the deallocation type in the destructor
+// will correspond to the allocation type in the constructor
+
+int __cpp_new_recording = 0;
+
+class DebugObject
+{
+public:
+ DebugObject();
+ ~DebugObject();
+};
+
+DebugObject::DebugObject()
+{
+ __cpp_new_recording = 1;
+}
+
+DebugObject::~DebugObject()
+{
+ __cpp_new_recording = 0;
+ DumpMallocInfo(DUMPTOFILE);
+}
+
+static DebugObject dbo;
+
+#else
+
+int __cpp_new_recording = 1;
+
+#endif
+
+#endif