1 /* 7zAlloc.c -- Allocation functions 2 2010-10-29 : Igor Pavlov : Public domain */ 3 4 #include "7zAlloc.h" 5 6 /* #define _SZ_ALLOC_DEBUG */ 7 /* use _SZ_ALLOC_DEBUG to debug alloc/free operations */ 8 9 #ifdef _SZ_ALLOC_DEBUG 10 11 #ifdef _WIN32 12 #include <windows.h> 13 #endif 14 15 #include <stdio.h> 16 int g_allocCount = 0; 17 int g_allocCountTemp = 0; 18 19 #endif 20 21 void *SzAlloc(void *p, size_t size) 22 { 23 p = p; 24 if (size == 0) 25 return 0; 26 #ifdef _SZ_ALLOC_DEBUG 27 fprintf(stderr, "\nAlloc %10d bytes; count = %10d", size, g_allocCount); 28 g_allocCount++; 29 #endif 30 return malloc(size); 31 } 32 33 void SzFree(void *p, void *address) 34 { 35 p = p; 36 #ifdef _SZ_ALLOC_DEBUG 37 if (address != 0) 38 { 39 g_allocCount--; 40 fprintf(stderr, "\nFree; count = %10d", g_allocCount); 41 } 42 #endif 43 free(address); 44 } 45 46 void *SzAllocTemp(void *p, size_t size) 47 { 48 p = p; 49 if (size == 0) 50 return 0; 51 #ifdef _SZ_ALLOC_DEBUG 52 fprintf(stderr, "\nAlloc_temp %10d bytes; count = %10d", size, g_allocCountTemp); 53 g_allocCountTemp++; 54 #ifdef _WIN32 55 return HeapAlloc(GetProcessHeap(), 0, size); 56 #endif 57 #endif 58 return malloc(size); 59 } 60 61 void SzFreeTemp(void *p, void *address) 62 { 63 p = p; 64 #ifdef _SZ_ALLOC_DEBUG 65 if (address != 0) 66 { 67 g_allocCountTemp--; 68 fprintf(stderr, "\nFree_temp; count = %10d", g_allocCountTemp); 69 } 70 #ifdef _WIN32 71 HeapFree(GetProcessHeap(), 0, address); 72 return; 73 #endif 74 #endif 75 free(address); 76 } 77