X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2FABM2.git;a=blobdiff_plain;f=ABM2%2FEngine%2Fmmanager.cpp;fp=ABM2%2FEngine%2Fmmanager.cpp;h=549965bdeee1f819c22e1618874aaff958854970;hp=6ed687af58b108754d77a025137b813ed58b824a;hb=b5abb5111b87fc7973c1e3f3f989e4adc92362d6;hpb=e8052fbdfce6586a04ac299b3970c89a5f63db7b diff --git a/ABM2/Engine/mmanager.cpp b/ABM2/Engine/mmanager.cpp index 6ed687a..549965b 100755 --- a/ABM2/Engine/mmanager.cpp +++ b/ABM2/Engine/mmanager.cpp @@ -1,9 +1,13 @@ +#ifndef USING_ENGINUITY +#define USING_ENGINUITY +#endif #include "engine.h" IMMObject *IMMObject::liveObjects=0; IMMObject *IMMObject::deadObjects=0; std::list IMMObject::heapObjects; +unsigned long IMMObject::heapUsage=0; IMMObject::IMMObject() { @@ -84,7 +88,7 @@ void IMMObject::CollectRemainingObjects(bool bEmitWarnings) { //copy the object to a temporary buffer so that our '10 bytes' message doesn't //cause an access violation - char szBuf[11]; ZeroMemory(szBuf,11); + char szBuf[11]; memset(szBuf,0,11); memcpy(szBuf,liveObjects,min(liveObjects->size(),10)); CLog::Get().Write(LOG_APP,IDS_UNRELEASED_OBJECT,liveObjects,liveObjects->size(),szBuf); } @@ -96,11 +100,17 @@ void IMMObject::CollectRemainingObjects(bool bEmitWarnings) void* IMMObject::operator new(size_t objsize) { void *newObj=malloc(objsize); + heapUsage+=objsize; heapObjects.push_back((IMMObject*)newObj); + ((IMMObject*)newObj)->heapAllocSize=objsize; return newObj; } void IMMObject::operator delete(void* obj) { - if(!((IMMObject*)obj)->bIsStackAllocated)free(obj); + if(!((IMMObject*)obj)->bIsStackAllocated) + { + heapUsage-=((IMMObject*)obj)->heapAllocSize; + free(obj); + } }