X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=ABM2%2FEngine%2Fmmanager.cpp;h=549965bdeee1f819c22e1618874aaff958854970;hb=c100d6f67b06abb348319e277a66b6b7ab0c4bd5;hp=54e75eaba76251464483ee46684362ba43713975;hpb=0835c5605c80efd286ccb7eff92fffc07689f359;p=matthijs%2FABM2.git diff --git a/ABM2/Engine/mmanager.cpp b/ABM2/Engine/mmanager.cpp index 54e75ea..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); -} \ No newline at end of file + if(!((IMMObject*)obj)->bIsStackAllocated) + { + heapUsage-=((IMMObject*)obj)->heapAllocSize; + free(obj); + } +}