+#ifndef USING_ENGINUITY\r
+#define USING_ENGINUITY\r
+#endif\r
#include "engine.h"\r
\r
\r
IMMObject *IMMObject::liveObjects=0;\r
IMMObject *IMMObject::deadObjects=0;\r
std::list<IMMObject *> IMMObject::heapObjects;\r
+unsigned long IMMObject::heapUsage=0;\r
\r
IMMObject::IMMObject()\r
{\r
{\r
//copy the object to a temporary buffer so that our '10 bytes' message doesn't\r
//cause an access violation\r
- char szBuf[11]; ZeroMemory(szBuf,11);\r
+ char szBuf[11]; memset(szBuf,0,11);\r
memcpy(szBuf,liveObjects,min(liveObjects->size(),10));\r
CLog::Get().Write(LOG_APP,IDS_UNRELEASED_OBJECT,liveObjects,liveObjects->size(),szBuf);\r
}\r
void* IMMObject::operator new(size_t objsize)\r
{\r
void *newObj=malloc(objsize);\r
+ heapUsage+=objsize;\r
heapObjects.push_back((IMMObject*)newObj);\r
+ ((IMMObject*)newObj)->heapAllocSize=objsize;\r
return newObj;\r
}\r
\r
void IMMObject::operator delete(void* obj)\r
{\r
- if(!((IMMObject*)obj)->bIsStackAllocated)free(obj);\r
+ if(!((IMMObject*)obj)->bIsStackAllocated)\r
+ {\r
+ heapUsage-=((IMMObject*)obj)->heapAllocSize;\r
+ free(obj);\r
+ }\r
}\r