1/* 7zAlloc.c -- Allocation functions 22010-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> 18int g_allocCount = 0; 19int g_allocCountTemp = 0; 20 21#endif 22 23void *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 35void 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 48void *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 63void 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