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