79 lines
1.7 KiB
C++
79 lines
1.7 KiB
C++
|
//+----------------------------------------------------------------------------
|
||
|
//
|
||
|
// File: regutil.cpp
|
||
|
//
|
||
|
// Module: CMSETUP.LIB
|
||
|
//
|
||
|
// Synopsis: Memory utility functions taken from cmutil. Bare minimum of functionality
|
||
|
// used in Cmutil, but gives a simple Heapalloc wrapper.
|
||
|
//
|
||
|
// Copyright (c) 1998-1999 Microsoft Corporation
|
||
|
//
|
||
|
// Author: quintinb Created 10/06/98
|
||
|
//
|
||
|
//+----------------------------------------------------------------------------
|
||
|
#ifndef __SETUPMEM_CPP
|
||
|
#define __SETUPMEM_CPP
|
||
|
#include "cmsetup.h"
|
||
|
|
||
|
//+----------------------------------------------------------------------------
|
||
|
// definitions
|
||
|
//+----------------------------------------------------------------------------
|
||
|
|
||
|
#ifdef DEBUG
|
||
|
LONG g_lMallocCnt = 0; // a counter to detect memory leak
|
||
|
#endif
|
||
|
|
||
|
void *CmRealloc(void *pvPtr, size_t nBytes)
|
||
|
{
|
||
|
void* p = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, pvPtr, nBytes);
|
||
|
|
||
|
CMASSERTMSG(p, TEXT("CmRealloc failed"));
|
||
|
|
||
|
return p;
|
||
|
}
|
||
|
|
||
|
|
||
|
void *CmMalloc(size_t nBytes)
|
||
|
{
|
||
|
#ifdef DEBUG
|
||
|
InterlockedIncrement(&g_lMallocCnt);
|
||
|
#endif
|
||
|
|
||
|
MYDBGASSERT(nBytes < 1024*1024); // It should be less than 1 MB
|
||
|
|
||
|
void* p = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, nBytes);
|
||
|
|
||
|
CMASSERTMSG(p, TEXT("CmMalloc failed"));
|
||
|
|
||
|
return p;
|
||
|
}
|
||
|
|
||
|
|
||
|
void CmFree(void *pvPtr)
|
||
|
{
|
||
|
if (pvPtr)
|
||
|
{
|
||
|
MYVERIFY(HeapFree(GetProcessHeap(), 0, pvPtr));
|
||
|
|
||
|
#ifdef DEBUG
|
||
|
InterlockedDecrement(&g_lMallocCnt);
|
||
|
#endif
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
void EndDebugMemory()
|
||
|
{
|
||
|
#ifdef DEBUG
|
||
|
if (g_lMallocCnt)
|
||
|
{
|
||
|
TCHAR buf[256];
|
||
|
wsprintf(buf, TEXT("Detect Memory Leak of %d blocks"), g_lMallocCnt);
|
||
|
CMASSERTMSG(FALSE, buf);
|
||
|
}
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
#endif //__SETUPMEM_CPP
|