summaryrefslogtreecommitdiff
path: root/src/mem3dcpp.cpp
diff options
context:
space:
mode:
authorSteven Fuller <relnev@icculus.org>2001-07-01 00:55:22 +0000
committerPatryk Obara <dreamer.tan@gmail.com>2019-08-20 02:09:04 +0200
commit2186d5f3f95cd74a070a490d899291648d58667a (patch)
tree55241a1afa3e1a22e0b6593a8dead0b703800f44 /src/mem3dcpp.cpp
parent218ca90543758a20ac326e444ca0643174ca7384 (diff)
Initial revision
Diffstat (limited to 'src/mem3dcpp.cpp')
-rw-r--r--src/mem3dcpp.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/mem3dcpp.cpp b/src/mem3dcpp.cpp
new file mode 100644
index 0000000..906b589
--- /dev/null
+++ b/src/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