Files
source/Standard Gaming Platform/MemMan.h
T
Overhaul 11c4d9648e Added memory leak detection to "new" operator
Prevent merc in slot 0 from disappearing due to errant schedule.  Still need to find and fix schedule though
Prevent attempts to turn or climb roof when soldier collapsed
Fix problems when mortar or RPG randomly assigned to a soldier but cannot be added for whatever reason
Pathing favors beginning path on orthogonal and using as few turns as possible (mostly old behavior).
Prevent interruptions when soldier climbs up, which can cause fall into building just below the target roof position
Fix pauses due to soldiers hurt in previous turn
Fix soldier path not reaching destination when thrown by explosion damage or heavy gunfire
Restore pathing to cave and underground exits
Fix too many AI ending up on the roofs


git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@1588 3b4a5df2-a311-0410-b5c6-a8a6f20db521
2007-11-09 09:10:40 +00:00

112 lines
3.9 KiB
C

//**************************************************************************
//
// Filename : MemMan.h
//
// Purpose : prototypes for the memory manager
//
// Modification history :
//
// 11sep96:HJH - Creation
//
//**************************************************************************
#ifndef _MEMMAN_H
#define _MEMMAN_H
//**************************************************************************
//
// Includes
//
//**************************************************************************
#include "types.h"
//**************************************************************************
//
// Defines
//
//**************************************************************************
//**************************************************************************
//
// Typedefs
//
//**************************************************************************
//**************************************************************************
//
// Function Prototypes
//
//**************************************************************************
#ifdef __cplusplus
extern "C" {
#endif
extern UINT32 MemDebugCounter;
extern UINT32 guiMemTotal;
extern UINT32 guiMemAlloced;
extern UINT32 guiMemFreed;
extern BOOLEAN InitializeMemoryManager( void );
extern void MemDebug( BOOLEAN f );
extern void ShutdownMemoryManager( void );
// Creates and adds a video object to list
#ifdef EXTREME_MEMORY_DEBUGGING
//This is the most effective way to debug memory leaks. Each memory leak will be recorded in a linked
//list containing a string referring to the location in code the memory was allocated in addition to
//the number of occurrences. The shutdown code will report all unhandled memory with exact location allocated.
void DumpMemoryInfoIntoFile( UINT8 *filename, BOOLEAN fAppend );
BOOLEAN _AddAndRecordMemAlloc( UINT32 size, UINT32 uiLineNum, UINT8 *pSourceFile );
#define MemAlloc( size ) MemAllocXDebug( (size), __FILE__, __LINE__, NULL )
#define MemFree( ptr ) MemFreeXDebug( (ptr), __FILE__, __LINE__, NULL )
#define MemRealloc( ptr, size ) MemReallocXDebug( (ptr), (size), __FILE__, __LINE__, NULL )
extern PTR MemAllocXDebug( UINT32 size, const STR8 szCodeString, INT32 iLineNum, void *pSpecial );
extern void MemFreeXDebug( PTR ptr, const STR8 szCodeString, INT32 iLineNum, void *pSpecial );
extern PTR MemReallocXDebug( PTR ptr, UINT32 size, const STR8 szCodeString, INT32 iLineNum, void *pSpecial );
#else
#ifdef _DEBUG
#include <crtdbg.h>
//This is another debug feature. Not as sophistocated, but definately not the pig the extreme system is.
//This system reports all memory allocations/deallocations in the debug output.
#define MemAlloc( size ) MemAllocReal( (size), __FILE__, __LINE__ )
#define MemFree( ptr ) MemFreeReal( (ptr), __FILE__, __LINE__ )
#define MemRealloc( ptr, size ) MemReallocReal( (ptr), (size), __FILE__, __LINE__ )
extern PTR MemAllocReal( UINT32 size, const STR8 , INT32 );
extern void MemFreeReal( PTR ptr, const STR8 , INT32 );
extern PTR MemReallocReal( PTR ptr, UINT32 size, const STR8 , INT32 );
//void* ::operator new( size_t sz, const char* file, int line);
//void* ::operator new[]( size_t sz, const char *file, int line);
#define NEW new
#define new NEW(_NORMAL_BLOCK, __FILE__, __LINE__)
#else
//Release build verison
#include <malloc.h>
#define MemAlloc( size ) malloc( (size) )
#define MemFree( ptr ) free( (ptr) )
#define MemRealloc( ptr, size ) realloc( (ptr), (size) )
#endif
#endif
extern PTR MemAllocLocked( UINT32 size );
extern void MemFreeLocked( PTR, UINT32 size );
// get total free on the system at this moment
extern UINT32 MemGetFree( void );
// get the total on the system
extern UINT32 MemGetTotalSystem( void );
extern BOOLEAN MemCheckPool( void );
#ifdef __cplusplus
}
#endif
#endif