microsoft/qdk

Public

mirrored fromhttps://github.com/microsoft/qdkAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
alex/katas-update

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

allocator/mimalloc-sys/mimalloc/include/mimalloc-override.h

67lines · modecode

1/* ----------------------------------------------------------------------------
2Copyright (c) 2018-2020 Microsoft Research, Daan Leijen
3This is free software; you can redistribute it and/or modify it under the
4terms 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/* ----------------------------------------------------------------------------
12This header can be used to statically redirect malloc/free and new/delete
13to the mimalloc variants. This can be useful if one can include this file on
14each source file in a project (but be careful when using external code to
15not 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 reallocarr(p,s,n) mi_reallocarr(p,s,n)
52#define memalign(a,n) mi_memalign(a,n)
53#define aligned_alloc(a,n) mi_aligned_alloc(a,n)
54#define posix_memalign(p,a,n) mi_posix_memalign(p,a,n)
55#define _posix_memalign(p,a,n) mi_posix_memalign(p,a,n)
56
57// Microsoft aligned variants
58#define _aligned_malloc(n,a) mi_malloc_aligned(n,a)
59#define _aligned_realloc(p,n,a) mi_realloc_aligned(p,n,a)
60#define _aligned_recalloc(p,s,n,a) mi_aligned_recalloc(p,s,n,a)
61#define _aligned_msize(p,a,o) mi_usable_size(p)
62#define _aligned_free(p) mi_free(p)
63#define _aligned_offset_malloc(n,a,o) mi_malloc_aligned_at(n,a,o)
64#define _aligned_offset_realloc(p,n,a,o) mi_realloc_aligned_at(p,n,a,o)
65#define _aligned_offset_recalloc(p,s,n,a,o) mi_recalloc_aligned_at(p,s,n,a,o)
66
67#endif // MIMALLOC_OVERRIDE_H
68