github.com/moontrade/nogc@v0.1.7/alloc/mimalloc/mimalloc-override.h (about) 1 /* ---------------------------------------------------------------------------- 2 Copyright (c) 2018-2020 Microsoft Research, Daan Leijen 3 This is free software; you can redistribute it and/or modify it under the 4 terms of the MIT license. A copy of the license can be found in the file 5 "LICENSE" at the root of this distribution. 6 -----------------------------------------------------------------------------*/ 7 #pragma once 8 #ifndef MIMALLOC_OVERRIDE_H 9 #define MIMALLOC_OVERRIDE_H 10 11 /* ---------------------------------------------------------------------------- 12 This header can be used to statically redirect malloc/free and new/delete 13 to the mimalloc variants. This can be useful if one can include this file on 14 each source file in a project (but be careful when using external code to 15 not accidentally mix pointers from different allocators). 16 -----------------------------------------------------------------------------*/ 17 18 #include <mimalloc.h> 19 20 // Standard C allocation 21 #define malloc(n) mi_malloc(n) 22 #define calloc(n,c) mi_calloc(n,c) 23 #define realloc(p,n) mi_realloc(p,n) 24 #define free(p) mi_free(p) 25 26 #define strdup(s) mi_strdup(s) 27 #define strndup(s,n) mi_strndup(s,n) 28 #define realpath(f,n) mi_realpath(f,n) 29 30 // Microsoft extensions 31 #define _expand(p,n) mi_expand(p,n) 32 #define _msize(p) mi_usable_size(p) 33 #define _recalloc(p,n,c) mi_recalloc(p,n,c) 34 35 #define _strdup(s) mi_strdup(s) 36 #define _strndup(s,n) mi_strndup(s,n) 37 #define _wcsdup(s) (wchar_t*)mi_wcsdup((const unsigned short*)(s)) 38 #define _mbsdup(s) mi_mbsdup(s) 39 #define _dupenv_s(b,n,v) mi_dupenv_s(b,n,v) 40 #define _wdupenv_s(b,n,v) mi_wdupenv_s((unsigned short*)(b),n,(const unsigned short*)(v)) 41 42 // Various Posix and Unix variants 43 #define reallocf(p,n) mi_reallocf(p,n) 44 #define malloc_size(p) mi_usable_size(p) 45 #define malloc_usable_size(p) mi_usable_size(p) 46 #define cfree(p) mi_free(p) 47 48 #define valloc(n) mi_valloc(n) 49 #define pvalloc(n) mi_pvalloc(n) 50 #define reallocarray(p,s,n) mi_reallocarray(p,s,n) 51 #define memalign(a,n) mi_memalign(a,n) 52 #define aligned_alloc(a,n) mi_aligned_alloc(a,n) 53 #define posix_memalign(p,a,n) mi_posix_memalign(p,a,n) 54 #define _posix_memalign(p,a,n) mi_posix_memalign(p,a,n) 55 56 // Microsoft aligned variants 57 #define _aligned_malloc(n,a) mi_malloc_aligned(n,a) 58 #define _aligned_realloc(p,n,a) mi_realloc_aligned(p,n,a) 59 #define _aligned_recalloc(p,s,n,a) mi_aligned_recalloc(p,s,n,a) 60 #define _aligned_msize(p,a,o) mi_usable_size(p) 61 #define _aligned_free(p) mi_free(p) 62 #define _aligned_offset_malloc(n,a,o) mi_malloc_aligned_at(n,a,o) 63 #define _aligned_offset_realloc(p,n,a,o) mi_realloc_aligned_at(p,n,a,o) 64 #define _aligned_offset_recalloc(p,s,n,a,o) mi_recalloc_aligned_at(p,s,n,a,o) 65 66 #endif // MIMALLOC_OVERRIDE_H