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