69 lines
2.1 KiB
C++
69 lines
2.1 KiB
C++
#include "stdafx.h"
|
|
|
|
#include "Logger.h"
|
|
|
|
HANDLE int_mymem_heap = NULL;
|
|
int int_mymem_was_init = 0;
|
|
unsigned int int_mymem_page_size = 0;
|
|
|
|
void MyMem_Init()
|
|
{
|
|
if( int_mymem_was_init ) return;
|
|
int_mymem_was_init = 1;
|
|
SYSTEM_INFO sysinfo;
|
|
memset( &sysinfo, 0, sizeof(sysinfo) );
|
|
GetSystemInfo( &sysinfo );
|
|
int_mymem_page_size = sysinfo.dwPageSize;
|
|
int_mymem_heap = HeapCreate( HEAP_GENERATE_EXCEPTIONS, 1048576, 0 );
|
|
if( !int_mymem_heap )
|
|
FatalAppExit( 0, TEXT("Memory Manager failed to allocate heap (HeapCreate() failed!)") );
|
|
}
|
|
|
|
void MyMem_Free()
|
|
{
|
|
if( !int_mymem_was_init ) return;
|
|
int_mymem_was_init = 0;
|
|
HeapDestroy( int_mymem_heap );
|
|
int_mymem_heap = NULL;
|
|
}
|
|
|
|
// Memory tracking allocation
|
|
/*inline void *operator new( size_t size ) // non-debug version
|
|
{
|
|
return HeapAlloc( int_mymem_heap, 0, (SIZE_T)size );
|
|
}*/
|
|
|
|
void *operator new( size_t nSize, const char *lpszFileName, int nLine )
|
|
{
|
|
log_error( LOG_OK, "[MM]: calling new from %d:\"%s\"... ", nLine, lpszFileName );
|
|
void *ret = HeapAlloc( int_mymem_heap, 0, (SIZE_T)nSize );
|
|
log_error_np( LOG_OK, "0x%p\n", ret );
|
|
ErrorLogger_FlushLogFile();
|
|
return ret;
|
|
}
|
|
|
|
/*void operator delete( void* p )
|
|
{
|
|
log_error( LOG_OK, "[MM]: calling delete( 0x%p )... ", p );
|
|
BOOL bRet = FALSE;
|
|
if( p ) bRet = HeapFree( int_mymem_heap, 0, p );
|
|
if( bRet == FALSE ) log_error_np( LOG_OK, "FALSE\n" ); else log_error_np( LOG_OK, "TRUE\n" );
|
|
}*/
|
|
|
|
void operator delete( void* p, size_t size )
|
|
{
|
|
log_error( LOG_OK, "[MM]: calling delete( 0x%p, %u )... ", p, (unsigned int)size );
|
|
BOOL bRet = FALSE;
|
|
if( p ) bRet = HeapFree( int_mymem_heap, 0, p );
|
|
if( bRet == FALSE ) log_error_np( LOG_OK, "FALSE\n" ); else log_error_np( LOG_OK, "TRUE\n" );
|
|
}
|
|
|
|
void operator delete( void* p, const char *lpszFileName, int nLine )
|
|
{
|
|
log_error( LOG_OK, "[MM]: calling delete( 0x%p ) from %d:\"%s\"... ",
|
|
p, nLine, lpszFileName );
|
|
BOOL bRet = FALSE;
|
|
if( p ) bRet = HeapFree( int_mymem_heap, 0, p );
|
|
if( bRet == FALSE ) log_error_np( LOG_OK, "FALSE\n" ); else log_error_np( LOG_OK, "TRUE\n" );
|
|
}
|