: myArray(NULL),
myTotalLeftSize(0),
myTotalPeakSize(0),
- myBreakSize(0)
+ myBreakSize(0),
+ myBreakPeak(0)
{
Reset();
}
myTotalLeftSize += theSize;
int nbLeft = myArray[ind].nbAlloc - myArray[ind].nbFree;
if (nbLeft > myArray[ind].nbLeftPeak)
+ {
myArray[ind].nbLeftPeak = nbLeft;
+ if (myBreakPeak != 0
+ && (myBreakSize == theSize || myBreakSize == 0))
+ {
+ const Standard_Size aSizePeak = myArray[ind].nbLeftPeak * theSize;
+ if (aSizePeak > myBreakPeak)
+ {
+ place_for_breakpoint();
+ }
+ }
+ }
if (myTotalLeftSize > (ptrdiff_t)myTotalPeakSize)
myTotalPeakSize = myTotalLeftSize;
myMutex.Unlock();
Numbers* myArray; //!< indexed from 0 to myMaxAllocSize-1
ptrdiff_t myTotalLeftSize; //!< currently remained allocated size
size_t myTotalPeakSize; //!< maxium cumulative allocated size
- size_t myBreakSize;
+ size_t myBreakSize; //!< user defined allocation size to debug (see place_for_breakpoint())
+ size_t myBreakPeak; //!< user defined peak size limit to debug
};
//! Set handler of allocation/deallocation events