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