24 lines
		
	
	
		
			1021 B
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			24 lines
		
	
	
		
			1021 B
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#pragma once
							 | 
						||
| 
								 | 
							
								#define MEMORY_BLOCK_SIZE 1048576
							 | 
						||
| 
								 | 
							
								#define META_BLOCK_EMEM_SIZE 16
							 | 
						||
| 
								 | 
							
								#define MAX_BLOCK_ELEM_SIZE_N 16
							 | 
						||
| 
								 | 
							
								#define MAX_BLOCK_ELEM_GROUP_N 8
							 | 
						||
| 
								 | 
							
								#define MEM_CALLSTACK_DEBUG_N 16
							 | 
						||
| 
								 | 
							
								#define MEMORY_ALIGN_N 16
							 | 
						||
| 
								 | 
							
								namespace pmr {
							 | 
						||
| 
								 | 
							
								    void* meta_malloc(size_t bytes, size_t alignment = MEMORY_ALIGN_N);
							 | 
						||
| 
								 | 
							
								    void  meta_free(void* ptr);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								MEMALLOC_API void* me_malloc(size_t size);
							 | 
						||
| 
								 | 
							
								MEMALLOC_API void* me_malloc_nothrow(size_t size) noexcept;
							 | 
						||
| 
								 | 
							
								MEMALLOC_API void  me_free(void* p) noexcept;
							 | 
						||
| 
								 | 
							
								#if (__cplusplus >= 201402L || _MSC_VER >= 1916)
							 | 
						||
| 
								 | 
							
								MEMALLOC_API void  me_free_size(void* p, size_t size)                           noexcept;
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#if (__cplusplus > 201402L || defined(__cpp_aligned_new))
							 | 
						||
| 
								 | 
							
								MEMALLOC_API void* me_malloc_aligned(size_t size, size_t alignment);
							 | 
						||
| 
								 | 
							
								MEMALLOC_API void* me_malloc_aligned_nothrow(size_t size, size_t alignment) noexcept;
							 | 
						||
| 
								 | 
							
								MEMALLOC_API void  me_free_size_aligned(void* p, size_t size, size_t alignment) noexcept;
							 | 
						||
| 
								 | 
							
								MEMALLOC_API void  me_free_aligned(void* p, size_t alignment)                   noexcept;
							 | 
						||
| 
								 | 
							
								#endif
							 |