l_memory.h (3011B)
1 /* 2 =========================================================================== 3 Copyright (C) 1999-2005 Id Software, Inc. 4 5 This file is part of Quake III Arena source code. 6 7 Quake III Arena source code is free software; you can redistribute it 8 and/or modify it under the terms of the GNU General Public License as 9 published by the Free Software Foundation; either version 2 of the License, 10 or (at your option) any later version. 11 12 Quake III Arena source code is distributed in the hope that it will be 13 useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with Foobar; if not, write to the Free Software 19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 =========================================================================== 21 */ 22 23 /***************************************************************************** 24 * name: l_memory.h 25 * 26 * desc: memory management 27 * 28 * $Archive: /source/code/botlib/l_memory.h $ 29 * 30 *****************************************************************************/ 31 32 //#define MEMDEBUG 33 34 #ifdef MEMDEBUG 35 #define GetMemory(size) GetMemoryDebug(size, #size, __FILE__, __LINE__); 36 #define GetClearedMemory(size) GetClearedMemoryDebug(size, #size, __FILE__, __LINE__); 37 //allocate a memory block of the given size 38 void *GetMemoryDebug(unsigned long size, char *label, char *file, int line); 39 //allocate a memory block of the given size and clear it 40 void *GetClearedMemoryDebug(unsigned long size, char *label, char *file, int line); 41 // 42 #define GetHunkMemory(size) GetHunkMemoryDebug(size, #size, __FILE__, __LINE__); 43 #define GetClearedHunkMemory(size) GetClearedHunkMemoryDebug(size, #size, __FILE__, __LINE__); 44 //allocate a memory block of the given size 45 void *GetHunkMemoryDebug(unsigned long size, char *label, char *file, int line); 46 //allocate a memory block of the given size and clear it 47 void *GetClearedHunkMemoryDebug(unsigned long size, char *label, char *file, int line); 48 #else 49 //allocate a memory block of the given size 50 void *GetMemory(unsigned long size); 51 //allocate a memory block of the given size and clear it 52 void *GetClearedMemory(unsigned long size); 53 // 54 #ifdef BSPC 55 #define GetHunkMemory GetMemory 56 #define GetClearedHunkMemory GetClearedMemory 57 #else 58 //allocate a memory block of the given size 59 void *GetHunkMemory(unsigned long size); 60 //allocate a memory block of the given size and clear it 61 void *GetClearedHunkMemory(unsigned long size); 62 #endif 63 #endif 64 65 //free the given memory block 66 void FreeMemory(void *ptr); 67 //returns the amount available memory 68 int AvailableMemory(void); 69 //prints the total used memory size 70 void PrintUsedMemorySize(void); 71 //print all memory blocks with label 72 void PrintMemoryLabels(void); 73 //returns the size of the memory block in bytes 74 int MemoryByteSize(void *ptr); 75 //free all allocated memory 76 void DumpMemory(void);