1 /* Alloc.h -- Memory allocation functions 2 2021-07-13 : Igor Pavlov : Public domain */ 3 4 #ifndef __COMMON_ALLOC_H 5 #define __COMMON_ALLOC_H 6 7 #include "7zTypes.h" 8 9 EXTERN_C_BEGIN 10 11 void *MyAlloc(size_t size); 12 void MyFree(void *address); 13 14 #ifdef _WIN32 15 16 void SetLargePageSize(void); 17 18 void *MidAlloc(size_t size); 19 void MidFree(void *address); 20 void *BigAlloc(size_t size); 21 void BigFree(void *address); 22 23 #else 24 25 #define MidAlloc(size) MyAlloc(size) 26 #define MidFree(address) MyFree(address) 27 #define BigAlloc(size) MyAlloc(size) 28 #define BigFree(address) MyFree(address) 29 30 #endif 31 32 extern const ISzAlloc g_Alloc; 33 34 #ifdef _WIN32 35 extern const ISzAlloc g_BigAlloc; 36 extern const ISzAlloc g_MidAlloc; 37 #else 38 #define g_BigAlloc g_AlignedAlloc 39 #define g_MidAlloc g_AlignedAlloc 40 #endif 41 42 extern const ISzAlloc g_AlignedAlloc; 43 44 45 typedef struct 46 { 47 ISzAlloc vt; 48 ISzAllocPtr baseAlloc; 49 unsigned numAlignBits; /* ((1 << numAlignBits) >= sizeof(void *)) */ 50 size_t offset; /* (offset == (k * sizeof(void *)) && offset < (1 << numAlignBits) */ 51 } CAlignOffsetAlloc; 52 53 void AlignOffsetAlloc_CreateVTable(CAlignOffsetAlloc *p); 54 55 56 EXTERN_C_END 57 58 #endif 59