81 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			81 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | /* 7zAlloc.c -- Allocation functions
 | ||
|  | 2017-04-03 : Igor Pavlov : Public domain */ | ||
|  | 
 | ||
|  | #include "Precomp.h"
 | ||
|  | 
 | ||
|  | #include <stdlib.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(ISzAllocPtr 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(ISzAllocPtr 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(ISzAllocPtr 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(ISzAllocPtr 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); | ||
|  | } |