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