| /* 7zAlloc.c -- Allocation functions |
| 2015-11-09 : Igor Pavlov : Public domain */ |
| |
| #include "Precomp.h" |
| |
| #include "7zAlloc.h" |
| |
| /* #define _SZ_ALLOC_DEBUG */ |
| /* use _SZ_ALLOC_DEBUG to debug alloc/free operations */ |
| |
| #ifdef _SZ_ALLOC_DEBUG |
| |
| #ifdef _WIN32 |
| #include <windows.h> |
| #endif |
| |
| #include <stdio.h> |
| int g_allocCount = 0; |
| int g_allocCountTemp = 0; |
| |
| #endif |
| |
| void *SzAlloc(void *p, size_t size) |
| { |
| UNUSED_VAR(p); |
| if (size == 0) |
| return 0; |
| #ifdef _SZ_ALLOC_DEBUG |
| fprintf(stderr, "\nAlloc %10u bytes; count = %10d", (unsigned)size, g_allocCount); |
| g_allocCount++; |
| #endif |
| return malloc(size); |
| } |
| |
| void SzFree(void *p, void *address) |
| { |
| UNUSED_VAR(p); |
| #ifdef _SZ_ALLOC_DEBUG |
| if (address != 0) |
| { |
| g_allocCount--; |
| fprintf(stderr, "\nFree; count = %10d", g_allocCount); |
| } |
| #endif |
| free(address); |
| } |
| |
| void *SzAllocTemp(void *p, size_t size) |
| { |
| UNUSED_VAR(p); |
| if (size == 0) |
| return 0; |
| #ifdef _SZ_ALLOC_DEBUG |
| fprintf(stderr, "\nAlloc_temp %10u bytes; count = %10d", (unsigned)size, g_allocCountTemp); |
| g_allocCountTemp++; |
| #ifdef _WIN32 |
| return HeapAlloc(GetProcessHeap(), 0, size); |
| #endif |
| #endif |
| return malloc(size); |
| } |
| |
| void SzFreeTemp(void *p, void *address) |
| { |
| UNUSED_VAR(p); |
| #ifdef _SZ_ALLOC_DEBUG |
| if (address != 0) |
| { |
| g_allocCountTemp--; |
| fprintf(stderr, "\nFree_temp; count = %10d", g_allocCountTemp); |
| } |
| #ifdef _WIN32 |
| HeapFree(GetProcessHeap(), 0, address); |
| return; |
| #endif |
| #endif |
| free(address); |
| } |