|
|
/*===================================================================
Microsoft Denali
Microsoft Confidential. Copyright 1996 Microsoft Corporation. All Rights Reserved.
Component: Memory Management
File: Memchk.h
Owner: PramodD
This is the Memory Manager header file ===================================================================*/
#ifndef MEMCHK_H
#define MEMCHK_H
#define DENALI_MEMCHK
// Always use these macros, DO NOT ever use DenaliMemXX functions directly
// Function names that SHOULD BE used
#define malloc(x) DenaliMemAlloc( x, __FILE__, __LINE__ )
#define calloc(x,y) DenaliMemCalloc( x, y, __FILE__, __LINE__ )
#define realloc(x,y) DenaliMemReAlloc( x, y, __FILE__, __LINE__ )
#define free(x) DenaliMemFree( x, __FILE__, __LINE__ )
#define DenaliMemoryInit() DenaliMemInit( __FILE__, __LINE__ )
#define DenaliMemoryUnInit() DenaliMemUnInit( __FILE__, __LINE__ )
#define DenaliDiagnostics() DenaliMemDiagnostics( __FILE__, __LINE__ )
#define DenaliIsValid(x) DenaliMemIsValid(x)
// Functions that are actually linked
extern HRESULT DenaliMemInit(const char *szFile, int lineno); extern void DenaliMemUnInit(const char *szFile, int lineno); extern void DenaliMemDiagnostics(const char *szFile, int lineno); extern void DenaliLogCall(const char *szLog, const char *szFile, int lineno); extern void * DenaliMemAlloc(size_t cSize, const char *szFile, int lineno ); extern void * DenaliMemCalloc(size_t cNum, size_t cbSize, const char *szFile, int lineno ); extern void DenaliMemFree(void * p, const char *szFile, int lineno); extern void * DenaliMemReAlloc(void * p, size_t cSize, const char *szFile, int lineno); extern int DenaliMemIsValid(void * p);
// Redefinition of global operators new and delete
#ifdef __cplusplus
// override for the default operator new
inline void * __cdecl operator new(size_t cSize) { return DenaliMemAlloc(cSize, NULL, 0); }
// override for the custom operator new with 3 args
inline void * operator new(size_t cSize, const char *szFile, int lineno) { return DenaliMemAlloc(cSize, szFile, lineno); }
// override for the default operator delete
inline void __cdecl operator delete(void * p) { DenaliMemFree(p, NULL, 0); }
// Macro to grab source file and line number information
#define new new( __FILE__, __LINE__ )
/*
#define delete DenaliLogCall( "Calling delete operator", __FILE__, __LINE__ ), delete
*/
#endif // __cplusplus
#endif // MEMCHK_H
|