NT4/private/windows/diamond/mem.h
2020-09-30 17:12:29 +02:00

75 lines
2.2 KiB
C

/*** mem.h - Definitions for Memory Manager
*
* Microsoft Confidential
* Copyright (C) Microsoft Corporation 1993-1994
* All Rights Reserved.
*
* The Memory Manager is a very thin layer on top of the native memory
* heap functions, allowing strong assertion checking and pointer
* validation in debug builds.
*
* Author:
* Benjamin W. Slivka
*
* History:
* 10-Aug-1993 bens Initial version
* 11-Aug-1993 bens Lift code from STOCK.EXE win app
* 12-Aug-1993 bens Improved comments
* 18-Mar-1994 bens strdup() now called _strdup(); renamed
* 18-May-1994 bens Allow turning off MemCheckHeap() in debug build
* (it can really, really slow things down!)
*
* Functions:
* MemAlloc - Allocate memory block
* MemFree - Free memory block
* MemStrDup - Duplicate string to new memory block
*
* Functions available in ASSERT build:
* MemAssert - Assert that pointer was allocated by MemAlloc
* MemCheckHeap - Check entire memory heap
* MemGetSize - Return allocated size of memory block
* MemSetCheckHeap - Control whether MemCheckHeap is done on every
* every MemAlloc and MemFree!
*/
#ifndef INCLUDED_MEMORY
#define INCLUDED_MEMORY 1
#ifdef ASSERT
#define MemAlloc(cb) MMAlloc(cb,__FILE__,__LINE__)
#define MemFree(pv) MMFree(pv,__FILE__,__LINE__)
#define MemStrDup(pv) MMStrDup(pv,__FILE__,__LINE__)
#define MemAssert(pv) MMAssert(pv,__FILE__,__LINE__)
#define MemCheckHeap() MMCheckHeap(__FILE__,__LINE__)
int MemGetSize(void *pv);
void *MMAlloc(unsigned cb, char *pszFile, int iLine);
void MMFree(void *pv, char *pszFile, int iLine);
void MMAssert(void *pv, char *pszFile, int iLine);
void MMCheckHeap(char *pszFile, int iLine);
char *MMStrDup(char *pv, char *pszFile, int iLine);
void MemSetCheckHeap(BOOL f);
#else // !ASSERT
#include <malloc.h> // Get malloc()/free()
#include <string.h> // Get _strdup()
//** No Asserts
#define MemAlloc(cb) malloc(cb)
#define MemFree(pv) free(pv)
#define MemStrDup(pv) _strdup(pv)
#define MemAssert(pv)
#define MemCheckHeap()
#define MemGetSize(pv)
#define MemSetCheckHeap(f)
#endif // !ASSERT
#endif // !INCLUDED_MEMORY