├── .gitattributes ├── .gitignore ├── CMakeLists.txt ├── LICENSE ├── SECURITY.md ├── azure-pipelines.yml ├── bin ├── mimalloc-redirect-arm64.dll ├── mimalloc-redirect-arm64.lib ├── mimalloc-redirect-arm64ec.dll ├── mimalloc-redirect-arm64ec.lib ├── mimalloc-redirect.dll ├── mimalloc-redirect.lib ├── mimalloc-redirect32.dll ├── mimalloc-redirect32.lib ├── minject-arm64.exe ├── minject.exe ├── minject32.exe └── readme.md ├── cmake ├── JoinPaths.cmake ├── mimalloc-config-version.cmake └── mimalloc-config.cmake ├── contrib ├── docker │ ├── alpine-arm32v7 │ │ └── Dockerfile │ ├── alpine-x86 │ │ └── Dockerfile │ ├── alpine │ │ └── Dockerfile │ ├── manylinux-x64 │ │ └── Dockerfile │ └── readme.md └── vcpkg │ ├── portfile.cmake │ ├── readme.md │ ├── usage │ ├── vcpkg-cmake-wrapper.cmake │ └── vcpkg.json ├── doc ├── bench-2020 │ ├── bench-c5-18xlarge-2020-01-20-a.svg │ ├── bench-c5-18xlarge-2020-01-20-b.svg │ ├── bench-c5-18xlarge-2020-01-20-rss-a.svg │ ├── bench-c5-18xlarge-2020-01-20-rss-b.svg │ ├── bench-r5a-1.svg │ ├── bench-r5a-12xlarge-2020-01-16-a.svg │ ├── bench-r5a-12xlarge-2020-01-16-b.svg │ ├── bench-r5a-2.svg │ ├── bench-r5a-rss-1.svg │ ├── bench-r5a-rss-2.svg │ ├── bench-spec-rss.svg │ ├── bench-spec.svg │ ├── bench-z4-1.svg │ ├── bench-z4-2.svg │ ├── bench-z4-rss-1.svg │ └── bench-z4-rss-2.svg ├── bench-2021 │ ├── bench-amd5950x-2021-01-30-a.svg │ ├── bench-amd5950x-2021-01-30-b.svg │ ├── bench-c5-18xlarge-2021-01-30-a.svg │ ├── bench-c5-18xlarge-2021-01-30-b.svg │ ├── bench-c5-18xlarge-2021-01-30-rss-a.svg │ ├── bench-c5-18xlarge-2021-01-30-rss-b.svg │ └── bench-macmini-2021-01-30.svg ├── doxyfile ├── ds-logo.jpg ├── ds-logo.png ├── mimalloc-doc.h ├── mimalloc-doxygen.css ├── mimalloc-logo-100.png ├── mimalloc-logo.png ├── mimalloc-logo.svg ├── spades-logo.png └── unreal-logo.svg ├── docs ├── annotated.html ├── annotated_dup.js ├── bc_s.png ├── bdwn.png ├── bench.html ├── build.html ├── classes.html ├── clipboard.js ├── closed.png ├── cookie.js ├── doc.png ├── doxygen.css ├── doxygen.png ├── doxygen.svg ├── dynsections.js ├── environment.html ├── folderclosed.png ├── folderopen.png ├── functions.html ├── functions_vars.html ├── group__aligned.html ├── group__aligned.js ├── group__analysis.html ├── group__analysis.js ├── group__analysis_structmi__heap__area__t.js ├── group__cpp.html ├── group__cpp.js ├── group__extended.html ├── group__extended.js ├── group__heap.html ├── group__heap.js ├── group__malloc.html ├── group__malloc.js ├── group__options.html ├── group__options.js ├── group__posix.html ├── group__posix.js ├── group__typed.html ├── group__typed.js ├── group__zeroinit.html ├── group__zeroinit.js ├── index.html ├── jquery.js ├── mimalloc-doc_8h_source.html ├── mimalloc-doxygen.css ├── mimalloc-logo.svg ├── modules.html ├── modules.js ├── nav_f.png ├── nav_g.png ├── nav_h.png ├── navtree.css ├── navtree.js ├── navtreedata.js ├── navtreeindex0.js ├── open.png ├── overrides.html ├── pages.html ├── resize.js ├── search │ ├── all_0.html │ ├── all_0.js │ ├── all_1.html │ ├── all_1.js │ ├── all_10.js │ ├── all_2.html │ ├── all_2.js │ ├── all_3.html │ ├── all_3.js │ ├── all_4.html │ ├── all_4.js │ ├── all_5.html │ ├── all_5.js │ ├── all_6.html │ ├── all_6.js │ ├── all_7.html │ ├── all_7.js │ ├── all_8.html │ ├── all_8.js │ ├── all_9.html │ ├── all_9.js │ ├── all_a.html │ ├── all_a.js │ ├── all_b.html │ ├── all_b.js │ ├── all_c.html │ ├── all_c.js │ ├── all_d.html │ ├── all_d.js │ ├── all_e.js │ ├── all_f.js │ ├── classes_0.html │ ├── classes_0.js │ ├── close.png │ ├── close.svg │ ├── enums_0.html │ ├── enums_0.js │ ├── enumvalues_0.html │ ├── enumvalues_0.js │ ├── enumvalues_1.html │ ├── enumvalues_1.js │ ├── functions_0.html │ ├── functions_0.js │ ├── functions_1.html │ ├── functions_1.js │ ├── groups_0.html │ ├── groups_0.js │ ├── groups_1.html │ ├── groups_1.js │ ├── groups_2.html │ ├── groups_2.js │ ├── groups_3.html │ ├── groups_3.js │ ├── groups_4.html │ ├── groups_4.js │ ├── groups_5.html │ ├── groups_5.js │ ├── groups_6.html │ ├── groups_6.js │ ├── groups_7.html │ ├── groups_7.js │ ├── groups_8.html │ ├── groups_8.js │ ├── groups_9.js │ ├── groups_a.js │ ├── groups_b.js │ ├── groups_c.js │ ├── groups_d.js │ ├── mag_sel.png │ ├── nomatches.html │ ├── pages_0.html │ ├── pages_0.js │ ├── pages_1.html │ ├── pages_1.js │ ├── pages_2.html │ ├── pages_2.js │ ├── pages_3.html │ ├── pages_3.js │ ├── pages_4.html │ ├── pages_4.js │ ├── pages_5.js │ ├── pages_6.js │ ├── pages_7.js │ ├── search.css │ ├── search.js │ ├── search_l.png │ ├── search_m.png │ ├── search_r.png │ ├── searchdata.js │ ├── typedefs_0.html │ ├── typedefs_0.js │ ├── typedefs_1.html │ ├── typedefs_1.js │ ├── typedefs_2.html │ ├── typedefs_2.js │ ├── variables_0.html │ ├── variables_0.js │ ├── variables_1.html │ ├── variables_1.js │ ├── variables_2.html │ ├── variables_2.js │ ├── variables_3.html │ ├── variables_3.js │ └── variables_4.js ├── splitbar.png ├── sync_off.png ├── sync_on.png ├── tab_a.png ├── tab_b.png ├── tab_h.png ├── tab_s.png ├── tabs.css ├── topics.js └── using.html ├── ide └── vs2022 │ ├── mimalloc-lib.vcxproj │ ├── mimalloc-lib.vcxproj.filters │ ├── mimalloc-override-dll.vcxproj │ ├── mimalloc-override-dll.vcxproj.filters │ ├── mimalloc-override-test-dep.vcxproj │ ├── mimalloc-override-test.vcxproj │ ├── mimalloc-test-api.vcxproj │ ├── mimalloc-test-stress.vcxproj │ ├── mimalloc-test.vcxproj │ └── mimalloc.sln ├── include ├── mimalloc-new-delete.h ├── mimalloc-override.h ├── mimalloc-stats.h ├── mimalloc.h └── mimalloc │ ├── atomic.h │ ├── internal.h │ ├── prim.h │ ├── track.h │ └── types.h ├── mimalloc.pc.in ├── readme.md ├── src ├── alloc-aligned.c ├── alloc-override.c ├── alloc-posix.c ├── alloc.c ├── arena-abandon.c ├── arena.c ├── bitmap.c ├── bitmap.h ├── free.c ├── heap.c ├── init.c ├── libc.c ├── options.c ├── os.c ├── page-queue.c ├── page.c ├── prim │ ├── emscripten │ │ └── prim.c │ ├── osx │ │ ├── alloc-override-zone.c │ │ └── prim.c │ ├── prim.c │ ├── readme.md │ ├── unix │ │ └── prim.c │ ├── wasi │ │ └── prim.c │ └── windows │ │ ├── etw-mimalloc.wprp │ │ ├── etw.h │ │ ├── etw.man │ │ ├── prim.c │ │ └── readme.md ├── random.c ├── segment-map.c ├── segment.c ├── static.c └── stats.c └── test ├── CMakeLists.txt ├── main-override-dep.cpp ├── main-override-dep.h ├── main-override-static.c ├── main-override.c ├── main-override.cpp ├── main.c ├── readme.md ├── test-api-fill.c ├── test-api.c ├── test-stress.c ├── test-wrong.c └── testhelper.h /.gitattributes: -------------------------------------------------------------------------------- 1 | # default behavior is to always use unix style line endings 2 | * text eol=lf 3 | *.png binary 4 | *.pdn binary 5 | *.jpg binary 6 | *.sln binary 7 | *.suo binary 8 | *.vcproj binary 9 | *.patch binary 10 | *.dll binary 11 | *.lib binary 12 | *.exe binary 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | ide/vs20??/*.db 3 | ide/vs20??/*.opendb 4 | ide/vs20??/*.user 5 | ide/vs20??/.vs 6 | ide/vs20??/VTune* 7 | out/ 8 | docs/ 9 | *.zip 10 | *.tar 11 | *.gz 12 | .vscode 13 | .DS_STore 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018-2025 Microsoft Corporation, Daan Leijen 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | <!-- BEGIN MICROSOFT SECURITY.MD V0.0.9 BLOCK --> 2 | 3 | ## Security 4 | 5 | Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet) and [Xamarin](https://github.com/xamarin). 6 | 7 | If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/security.md/definition), please report it to us as described below. 8 | 9 | ## Reporting Security Issues 10 | 11 | **Please do not report security vulnerabilities through public GitHub issues.** 12 | 13 | Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/security.md/msrc/create-report). 14 | 15 | If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/security.md/msrc/pgp). 16 | 17 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc). 18 | 19 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: 20 | 21 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) 22 | * Full paths of source file(s) related to the manifestation of the issue 23 | * The location of the affected source code (tag/branch/commit or direct URL) 24 | * Any special configuration required to reproduce the issue 25 | * Step-by-step instructions to reproduce the issue 26 | * Proof-of-concept or exploit code (if possible) 27 | * Impact of the issue, including how an attacker might exploit the issue 28 | 29 | This information will help us triage your report more quickly. 30 | 31 | If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/security.md/msrc/bounty) page for more details about our active programs. 32 | 33 | ## Preferred Languages 34 | 35 | We prefer all communications to be in English. 36 | 37 | ## Policy 38 | 39 | Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/security.md/cvd). 40 | 41 | <!-- END MICROSOFT SECURITY.MD BLOCK --> 42 | -------------------------------------------------------------------------------- /bin/mimalloc-redirect-arm64.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/bin/mimalloc-redirect-arm64.dll -------------------------------------------------------------------------------- /bin/mimalloc-redirect-arm64.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/bin/mimalloc-redirect-arm64.lib -------------------------------------------------------------------------------- /bin/mimalloc-redirect-arm64ec.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/bin/mimalloc-redirect-arm64ec.dll -------------------------------------------------------------------------------- /bin/mimalloc-redirect-arm64ec.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/bin/mimalloc-redirect-arm64ec.lib -------------------------------------------------------------------------------- /bin/mimalloc-redirect.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/bin/mimalloc-redirect.dll -------------------------------------------------------------------------------- /bin/mimalloc-redirect.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/bin/mimalloc-redirect.lib -------------------------------------------------------------------------------- /bin/mimalloc-redirect32.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/bin/mimalloc-redirect32.dll -------------------------------------------------------------------------------- /bin/mimalloc-redirect32.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/bin/mimalloc-redirect32.lib -------------------------------------------------------------------------------- /bin/minject-arm64.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/bin/minject-arm64.exe -------------------------------------------------------------------------------- /bin/minject.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/bin/minject.exe -------------------------------------------------------------------------------- /bin/minject32.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/bin/minject32.exe -------------------------------------------------------------------------------- /cmake/JoinPaths.cmake: -------------------------------------------------------------------------------- 1 | # This module provides function for joining paths 2 | # known from most languages 3 | # 4 | # SPDX-License-Identifier: (MIT OR CC0-1.0) 5 | # Copyright 2020 Jan Tojnar 6 | # https://github.com/jtojnar/cmake-snips 7 | # 8 | # Modelled after Python’s os.path.join 9 | # https://docs.python.org/3.7/library/os.path.html#os.path.join 10 | # Windows not supported 11 | function(join_paths joined_path first_path_segment) 12 | set(temp_path "${first_path_segment}") 13 | foreach(current_segment IN LISTS ARGN) 14 | if(NOT ("${current_segment}" STREQUAL "")) 15 | if(IS_ABSOLUTE "${current_segment}") 16 | set(temp_path "${current_segment}") 17 | else() 18 | set(temp_path "${temp_path}/${current_segment}") 19 | endif() 20 | endif() 21 | endforeach() 22 | set(${joined_path} "${temp_path}" PARENT_SCOPE) 23 | endfunction() 24 | -------------------------------------------------------------------------------- /cmake/mimalloc-config-version.cmake: -------------------------------------------------------------------------------- 1 | set(mi_version_major 2) 2 | set(mi_version_minor 2) 3 | set(mi_version_patch 5) 4 | set(mi_version ${mi_version_major}.${mi_version_minor}) 5 | 6 | set(PACKAGE_VERSION ${mi_version}) 7 | if(PACKAGE_FIND_VERSION_MAJOR) 8 | if("${PACKAGE_FIND_VERSION_MAJOR}" EQUAL "${mi_version_major}") 9 | if ("${PACKAGE_FIND_VERSION_MINOR}" EQUAL "${mi_version_minor}") 10 | set(PACKAGE_VERSION_EXACT TRUE) 11 | elseif("${PACKAGE_FIND_VERSION_MINOR}" LESS "${mi_version_minor}") 12 | set(PACKAGE_VERSION_COMPATIBLE TRUE) 13 | else() 14 | set(PACKAGE_VERSION_UNSUITABLE TRUE) 15 | endif() 16 | else() 17 | set(PACKAGE_VERSION_UNSUITABLE TRUE) 18 | endif() 19 | endif() 20 | -------------------------------------------------------------------------------- /cmake/mimalloc-config.cmake: -------------------------------------------------------------------------------- 1 | include(${CMAKE_CURRENT_LIST_DIR}/mimalloc.cmake) 2 | get_filename_component(MIMALLOC_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}" PATH) # one up from the cmake dir, e.g. /usr/local/lib/cmake/mimalloc-2.0 3 | get_filename_component(MIMALLOC_VERSION_DIR "${CMAKE_CURRENT_LIST_DIR}" NAME) 4 | string(REPLACE "/lib/cmake" "/lib" MIMALLOC_LIBRARY_DIR "${MIMALLOC_CMAKE_DIR}") 5 | if("${MIMALLOC_VERSION_DIR}" EQUAL "mimalloc") 6 | # top level install 7 | string(REPLACE "/lib/cmake" "/include" MIMALLOC_INCLUDE_DIR "${MIMALLOC_CMAKE_DIR}") 8 | set(MIMALLOC_OBJECT_DIR "${MIMALLOC_LIBRARY_DIR}") 9 | else() 10 | # versioned 11 | string(REPLACE "/lib/cmake/" "/include/" MIMALLOC_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}") 12 | string(REPLACE "/lib/cmake/" "/lib/" MIMALLOC_OBJECT_DIR "${CMAKE_CURRENT_LIST_DIR}") 13 | endif() 14 | set(MIMALLOC_TARGET_DIR "${MIMALLOC_LIBRARY_DIR}") # legacy 15 | -------------------------------------------------------------------------------- /contrib/docker/alpine-arm32v7/Dockerfile: -------------------------------------------------------------------------------- 1 | # install from an image 2 | # download first an appropriate tar.gz image into the current directory 3 | # from <https://github.com/alpinelinux/docker-alpine/tree/edge/armv7> 4 | FROM scratch 5 | 6 | # Substitute the image name that was downloaded 7 | ADD alpine-minirootfs-20240329-armv7.tar.gz / 8 | 9 | # Install tools 10 | RUN apk add build-base make cmake 11 | RUN apk add git 12 | RUN apk add vim 13 | 14 | RUN mkdir -p /home/dev 15 | WORKDIR /home/dev 16 | 17 | # Get mimalloc 18 | RUN git clone https://github.com/microsoft/mimalloc -b dev2 19 | RUN mkdir -p mimalloc/out/release 20 | RUN mkdir -p mimalloc/out/debug 21 | 22 | # Build mimalloc debug 23 | WORKDIR /home/dev/mimalloc/out/debug 24 | RUN cmake ../.. -DMI_DEBUG_FULL=ON 25 | RUN make -j 26 | RUN make test 27 | 28 | CMD ["/bin/sh"] 29 | -------------------------------------------------------------------------------- /contrib/docker/alpine-x86/Dockerfile: -------------------------------------------------------------------------------- 1 | # install from an image 2 | # download first an appropriate tar.gz image into the current directory 3 | # from <https://github.com/alpinelinux/docker-alpine/tree/edge/x86> 4 | FROM scratch 5 | 6 | # Substitute the image name that was downloaded 7 | ADD alpine-minirootfs-20250108-x86.tar.gz / 8 | 9 | # Install tools 10 | RUN apk add build-base make cmake 11 | RUN apk add git 12 | RUN apk add vim 13 | 14 | RUN mkdir -p /home/dev 15 | WORKDIR /home/dev 16 | 17 | # Get mimalloc 18 | RUN git clone https://github.com/microsoft/mimalloc -b dev2 19 | RUN mkdir -p mimalloc/out/release 20 | RUN mkdir -p mimalloc/out/debug 21 | 22 | # Build mimalloc debug 23 | WORKDIR /home/dev/mimalloc/out/debug 24 | RUN cmake ../.. -DMI_DEBUG_FULL=ON 25 | # RUN make -j 26 | # RUN make test 27 | 28 | CMD ["/bin/sh"] 29 | -------------------------------------------------------------------------------- /contrib/docker/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | # alpine image 2 | FROM alpine 3 | 4 | # Install tools 5 | RUN apk add build-base make cmake 6 | RUN apk add git 7 | RUN apk add vim 8 | 9 | RUN mkdir -p /home/dev 10 | WORKDIR /home/dev 11 | 12 | # Get mimalloc 13 | RUN git clone https://github.com/microsoft/mimalloc -b dev2 14 | RUN mkdir -p mimalloc/out/release 15 | RUN mkdir -p mimalloc/out/debug 16 | 17 | # Build mimalloc debug 18 | WORKDIR /home/dev/mimalloc/out/debug 19 | RUN cmake ../.. -DMI_DEBUG_FULL=ON 20 | RUN make -j 21 | RUN make test 22 | 23 | CMD ["/bin/sh"] -------------------------------------------------------------------------------- /contrib/docker/manylinux-x64/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM quay.io/pypa/manylinux2014_x86_64 2 | 3 | # Install tools 4 | RUN yum install -y openssl-devel 5 | RUN yum install -y gcc gcc-c++ kernel-devel make 6 | RUN yum install -y git cmake 7 | RUN yum install -y vim 8 | 9 | RUN mkdir -p /home/dev 10 | WORKDIR /home/dev 11 | 12 | # Get mimalloc 13 | RUN git clone https://github.com/microsoft/mimalloc -b dev2 14 | RUN mkdir -p mimalloc/out/release 15 | RUN mkdir -p mimalloc/out/debug 16 | 17 | # Build mimalloc debug 18 | WORKDIR /home/dev/mimalloc/out/debug 19 | RUN cmake ../.. -DMI_DEBUG_FULL=ON 20 | RUN make -j 21 | RUN make test 22 | 23 | CMD ["/bin/sh"] -------------------------------------------------------------------------------- /contrib/docker/readme.md: -------------------------------------------------------------------------------- 1 | Various example docker files used for testing. 2 | 3 | Usage: 4 | 5 | ``` 6 | > cd <host> 7 | > docker build -t <host>-mimalloc . 8 | > docker run -it <host>-mimalloc 9 | >> make test 10 | ``` 11 | -------------------------------------------------------------------------------- /contrib/vcpkg/portfile.cmake: -------------------------------------------------------------------------------- 1 | vcpkg_from_github( 2 | OUT_SOURCE_PATH SOURCE_PATH 3 | REPO microsoft/mimalloc 4 | HEAD_REF master 5 | 6 | # The "REF" can be a commit hash, branch name (dev2), or a version (v2.2.1). 7 | REF "v${VERSION}" 8 | # REF e2db21e9ba9fb9172b7b0aa0fe9b8742525e8774 9 | 10 | # The sha512 is the hash of the tar.gz bundle. 11 | # (To get the sha512, run `vcpkg install "mimalloc[override]" --overlay-ports=./contrib/vcpkg` and copy the sha from the error message.) 12 | SHA512 5218fcd3ad285687ed3f78b4651d7d3aee92b6f28e6c563a884975e654a43c94c4e5c02c5ed0322c3d3627d83d4843df2d2d8441f09aa18d00674ca9fd657345 13 | ) 14 | 15 | vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS 16 | FEATURES 17 | c MI_NO_USE_CXX 18 | guarded MI_GUARDED 19 | secure MI_SECURE 20 | override MI_OVERRIDE 21 | optarch MI_OPT_ARCH 22 | nooptarch MI_NO_OPT_ARCH 23 | optsimd MI_OPT_SIMD 24 | xmalloc MI_XMALLOC 25 | asm MI_SEE_ASM 26 | ) 27 | string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" MI_BUILD_STATIC) 28 | string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" MI_BUILD_SHARED) 29 | 30 | vcpkg_cmake_configure( 31 | SOURCE_PATH "${SOURCE_PATH}" 32 | OPTIONS 33 | -DMI_USE_CXX=ON 34 | -DMI_BUILD_TESTS=OFF 35 | -DMI_BUILD_OBJECT=ON 36 | -DMI_BUILD_STATIC=${MI_BUILD_STATIC} 37 | -DMI_BUILD_SHARED=${MI_BUILD_SHARED} 38 | -DMI_INSTALL_TOPLEVEL=ON 39 | ${FEATURE_OPTIONS} 40 | ) 41 | 42 | vcpkg_cmake_install() 43 | vcpkg_copy_pdbs() 44 | 45 | file(COPY 46 | "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" 47 | "${CMAKE_CURRENT_LIST_DIR}/usage" 48 | DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" 49 | ) 50 | vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/mimalloc) 51 | 52 | if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") 53 | # todo: why is this needed? 54 | vcpkg_replace_string( 55 | "${CURRENT_PACKAGES_DIR}/include/mimalloc.h" 56 | "!defined(MI_SHARED_LIB)" 57 | "0 // !defined(MI_SHARED_LIB)" 58 | ) 59 | endif() 60 | file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") 61 | file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") 62 | 63 | vcpkg_fixup_pkgconfig() 64 | vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") 65 | -------------------------------------------------------------------------------- /contrib/vcpkg/readme.md: -------------------------------------------------------------------------------- 1 | # Vcpkg support 2 | 3 | This directory is meant to provide the sources for the official [vcpkg port] 4 | of mimalloc, but can also be used to override the official port with 5 | your own variant. 6 | 7 | For example, you can edit the [`portfile.cmake`](portfile.cmake) 8 | to check out a specific commit, version, or branch of mimalloc, or set further options. 9 | You can install such custom port as: 10 | 11 | ```sh 12 | $ vcpkg install "mimalloc[override]" --recurse --overlay-ports=./contrib/vcpkg 13 | ``` 14 | 15 | This will also show the correct sha512 hash if you use a custom version. 16 | Another way is to refer to the overlay from the [vcpkg-configuration.json](https://learn.microsoft.com/en-us/vcpkg/reference/vcpkg-configuration-json) file. 17 | See also the vcpkg [documentation](https://learn.microsoft.com/en-us/vcpkg/produce/update-package-version) for more information. 18 | 19 | 20 | # Using mimalloc from vcpkg 21 | 22 | When using [cmake with vcpkg](https://learn.microsoft.com/en-us/vcpkg/get_started/get-started?pivots=shell-powershell), 23 | you can use mimalloc from the `CMakeLists.txt` as: 24 | 25 | ```cmake 26 | find_package(mimalloc CONFIG REQUIRED) 27 | target_link_libraries(main PRIVATE mimalloc) 28 | ``` 29 | 30 | See [`test/CMakeLists.txt](../../test/CMakeLists.txt) for more examples. 31 | 32 | 33 | # Acknowledgements 34 | 35 | The original port for vckpg was contributed by many people, including: @vicroms, @myd7349, @PhoubeHui, @LilyWangL, 36 | @JonLiu1993, @RT2Code, Remy Tassoux, @wangao, @BillyONeal, @jiayuehua, @dg0yt, @gerar-ryan-immersaview, @nickdademo, 37 | and @jimwang118 -- Thank you so much! 38 | 39 | 40 | [vcpkg port]: https://github.com/microsoft/vcpkg/tree/master/ports/mimalloc 41 | -------------------------------------------------------------------------------- /contrib/vcpkg/usage: -------------------------------------------------------------------------------- 1 | Use the following CMake targets to import mimalloc: 2 | 3 | find_package(mimalloc CONFIG REQUIRED) 4 | target_link_libraries(main PRIVATE mimalloc) 5 | 6 | And use mimalloc in your sources as: 7 | 8 | #include <mimalloc.h> 9 | #include <stdio.h> 10 | int main(int argc, char** argv) { 11 | int* p = mi_malloc_tp(int); 12 | *p = mi_version(); 13 | printf("mimalloc version: %d\n", *p); 14 | mi_free(p); 15 | return 0; 16 | } 17 | 18 | When dynamically overriding on Windows, ensure `mimalloc.dll` is linked through some call to 19 | mimalloc (e.g. `mi_version()`), and that the `mimalloc-redirect.dll` is in the same directory. 20 | See https://github.com/microsoft/mimalloc/blob/dev/bin/readme.md for detailed information. 21 | -------------------------------------------------------------------------------- /contrib/vcpkg/vcpkg-cmake-wrapper.cmake: -------------------------------------------------------------------------------- 1 | _find_package(${ARGS}) 2 | 3 | if(CMAKE_CURRENT_LIST_DIR STREQUAL "${MIMALLOC_CMAKE_DIR}/${MIMALLOC_VERSION_DIR}") 4 | set(MIMALLOC_INCLUDE_DIR "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include") 5 | # As in vcpkg.cmake 6 | if(NOT DEFINED CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE MATCHES "^[Dd][Ee][Bb][Uu][Gg]quot;) 7 | set(MIMALLOC_LIBRARY_DIR "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib") 8 | else() 9 | set(MIMALLOC_LIBRARY_DIR "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib") 10 | endif() 11 | set(MIMALLOC_OBJECT_DIR "${MIMALLOC_LIBRARY_DIR}") 12 | set(MIMALLOC_TARGET_DIR "${MIMALLOC_LIBRARY_DIR}") 13 | endif() 14 | 15 | # vcpkg always configures either a static or dynamic library. 16 | # ensure to always expose the mimalloc target as either the static or dynamic build. 17 | if(TARGET mimalloc-static AND NOT TARGET mimalloc) 18 | add_library(mimalloc INTERFACE IMPORTED) 19 | set_target_properties(mimalloc PROPERTIES INTERFACE_LINK_LIBRARIES mimalloc-static) 20 | endif() 21 | -------------------------------------------------------------------------------- /contrib/vcpkg/vcpkg.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mimalloc", 3 | "version": "2.2.4", 4 | "port-version": 1, 5 | "description": "Compact general purpose allocator with excellent performance", 6 | "homepage": "https://github.com/microsoft/mimalloc", 7 | "license": "MIT", 8 | "supports": "!uwp", 9 | "dependencies": [ 10 | { 11 | "name": "vcpkg-cmake", 12 | "host": true 13 | }, 14 | { 15 | "name": "vcpkg-cmake-config", 16 | "host": true 17 | } 18 | ], 19 | "features": { 20 | "c": { 21 | "description": "Use C11 compilation (this can still override new/delete)" 22 | }, 23 | "override": { 24 | "description": "Override the standard malloc/free interface" 25 | }, 26 | "secure": { 27 | "description": "Use full security mitigations (like guard pages and randomization)" 28 | }, 29 | "guarded": { 30 | "description": "Use build that support guard pages after objects controlled with MIMALLOC_GUARDED_SAMPLE_RATE" 31 | }, 32 | "xmalloc": { 33 | "description": "If out-of-memory, call abort() instead of returning NULL" 34 | }, 35 | "optarch": { 36 | "description": "Use architecture specific optimizations (on x64: '-march=haswell;-mavx2', on arm64: '-march=armv8.1-a')" 37 | }, 38 | "nooptarch": { 39 | "description": "Do _not_ use architecture specific optimizations (on x64: '-march=haswell;-mavx2', on arm64: '-march=armv8.1-a')" 40 | }, 41 | "optsimd": { 42 | "description": "Allow use of SIMD instructions (avx2 or neon) (requires 'optarch' to be enabled)" 43 | }, 44 | "asm": { 45 | "description": "Generate assembly files" 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /doc/ds-logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/doc/ds-logo.jpg -------------------------------------------------------------------------------- /doc/ds-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/doc/ds-logo.png -------------------------------------------------------------------------------- /doc/mimalloc-doxygen.css: -------------------------------------------------------------------------------- 1 | #projectlogo img { 2 | padding: 1ex; 3 | } 4 | tt, code, kbd, samp, div.memproto, div.fragment, div.line, table.memname { 5 | font-family: Consolas, Monaco, Inconsolata, "Courier New", monospace; 6 | } 7 | .image img, .textblock img { 8 | max-width: 99%; 9 | max-height: 350px; 10 | } 11 | table.memname, .memname{ 12 | font-weight: bold; 13 | } 14 | code { 15 | background-color: #EEE; 16 | padding: 0ex 0.25ex; 17 | } 18 | body { 19 | margin: 1ex 1ex 0ex 1ex; 20 | border: 1px solid black; 21 | } 22 | .contents table, .contents div, .contents p, .contents dl { 23 | font-size: 16px; 24 | line-height: 1.44; 25 | } 26 | body #nav-tree .label { 27 | font-size: 14px; 28 | } 29 | a{ 30 | text-decoration: underline; 31 | } 32 | #side-nav { 33 | margin-left: 1ex; 34 | border-left: 1px solid black; 35 | } 36 | #nav-tree { 37 | padding-left: 1ex; 38 | } 39 | #nav-path { 40 | display: none; 41 | } 42 | div.fragment { 43 | background-color: #EEE; 44 | padding: 0.25ex 0.5ex; 45 | border-color: black; 46 | } 47 | #nav-sync img { 48 | display: none; 49 | } 50 | h1,h2,h3,h4,h5,h6 { 51 | transition:none; 52 | } 53 | .memtitle { 54 | background-image: none; 55 | background-color: #EEE; 56 | } 57 | table.memproto, .memproto { 58 | text-shadow: none; 59 | font-size: 110%; 60 | } 61 | -------------------------------------------------------------------------------- /doc/mimalloc-logo-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/doc/mimalloc-logo-100.png -------------------------------------------------------------------------------- /doc/mimalloc-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/doc/mimalloc-logo.png -------------------------------------------------------------------------------- /doc/spades-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/doc/spades-logo.png -------------------------------------------------------------------------------- /doc/unreal-logo.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 | <svg 3 | height="706.71118" 4 | width="746.71118" 5 | viewBox="-150.3282 -273.04775 810.70706 1447.2442" 6 | version="1.1" 7 | id="svg34" 8 | xmlns="http://www.w3.org/2000/svg" 9 | xmlns:svg="http://www.w3.org/2000/svg"> 10 | <defs 11 | id="defs24"> 12 | <clipPath 13 | id="a" 14 | clipPathUnits="userSpaceOnUse"> 15 | <path 16 | d="M 0,1024 H 1024 V 0 H 0 Z" 17 | id="path21" /> 18 | </clipPath> 19 | </defs> 20 | <rect 21 | style="fill:#b2b2b2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.04786;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 22 | id="rect121" 23 | width="1300.7299" 24 | height="1264.0651" 25 | x="-391.91745" 26 | y="-186.69598" 27 | rx="154.79872" 28 | ry="154.79872" /> 29 | <path 30 | d="m 693.86447,863.90527 v -94.746 h -35.855 v 122.747 h 120.26 v -28 z" 31 | id="path26" /> 32 | <g 33 | clip-path="url(#a)" 34 | transform="matrix(1.33333,0,0,-1.33333,-408.39652,1133.2393)" 35 | id="g32"> 36 | <path 37 | d="m 498.837,117.958 h 20.085 c 0.498,-5.295 -1.063,-7.971 -5.392,-8.386 -4.293,-0.411 -8.612,-0.76 -12.92,-0.77 -17.903,-0.044 -19.822,2.052 -18.737,19.932 0.02,0.333 0.03,0.666 0.063,0.997 0.67,6.667 3.126,9.189 9.81,9.499 5.15,0.238 10.316,0.089 15.476,0.132 5.373,0.044 10.5,-0.337 11.806,-6.626 h 13.198 c 1.86,10.558 -1.6,16.306 -11.74,16.9 -13.059,0.767 -26.228,0.648 -39.293,-0.086 -8.782,-0.493 -13.292,-5.67 -13.804,-14.27 -0.444,-7.454 -0.42,-14.975 -0.007,-22.434 0.441,-7.953 4.16,-11.928 11.938,-13.918 2.87,-0.734 5.785,-1.29 8.68,-1.928 h 26 c 2.091,0.444 4.177,0.913 6.274,1.328 5.615,1.11 11.135,2.918 12.264,9.28 1.114,6.278 1.061,12.763 1.546,19.515 h -35.247 z m -103.4,63.438 v 91.393 h -26.424 v -69.795 l -54.236,70.22 H 273.38 V 181.28 h 26.308 v 68.354 l 1.226,0.31 53.645,-68.547 z m 47.577,45.635 v 26.323 c 12.208,0 24.12,0.002 36.033,-0.003 1.662,0 3.323,-0.048 4.985,-0.059 14.801,-0.1 16.353,-4.42 14.866,-18.979 -0.484,-4.738 -4.073,-7.103 -8.306,-7.175 -15.731,-0.268 -31.469,-0.107 -47.578,-0.107 m 56.443,-33.406 c 0.357,-4.063 0.548,-8.14 0.82,-12.3 h 26.391 c 0,5.758 0.219,11.061 -0.045,16.34 -0.581,11.61 -2.289,16.735 -13.599,18.696 -0.592,0.103 -1.114,0.614 -2.506,1.42 11.369,2.53 15.442,10.208 15.981,20.201 0.267,4.96 0.176,10.017 -0.484,14.932 -1.604,11.95 -5.993,16.673 -17.761,18.885 a 101.743,101.743 0 0 1 -17.843,1.741 c -22.818,0.197 -45.638,0.09 -68.458,0.066 -1.78,-0.002 -3.559,-0.22 -5.646,-0.36 v -91.884 h 26.535 v 25.35 c 6.04,0 11.509,0.111 16.972,-0.025 9.644,-0.24 19.344,-0.086 28.908,-1.129 7.832,-0.854 10.041,-4.046 10.735,-11.933 m 73.129,24.754 h 68.786 v 18.565 h -68.899 v 16.585 h 72.852 v 19.517 h -99.79 v -91.744 h 101.018 v 20.193 h -73.967 z m -319.109,52.037 c 0.004,0.918 -0.563,1.84 -0.847,2.708 h -26.34 c 0,-16.299 0.052,-32.104 -0.036,-47.909 -0.025,-4.314 -0.31,-8.644 -0.772,-12.935 -0.665,-6.161 -4.552,-10.04 -10.412,-10.334 -12.098,-0.61 -24.283,-1.056 -36.347,-0.266 -9.717,0.635 -12.873,4.996 -12.984,14.895 -0.19,16.997 -0.103,33.998 -0.188,50.997 -0.009,1.895 -0.385,3.789 -0.59,5.67 h -26.32 c 0,-22.846 -0.788,-45.02 0.27,-67.106 0.734,-15.35 7.1,-21.4 22.59,-23.992 22.481,-3.765 45.194,-3.61 67.677,-0.266 17.168,2.553 22.995,8.927 23.753,26.069 0.92,20.79 0.464,41.644 0.546,62.47 m 447.926,-53.371 19.515,38.362 19.723,-38.362 z m 2.8,56.306 -49.975,-92.133 h 28.863 l 8.345,15.905 h 59.333 l 8.375,-15.847 h 29.165 l -50.248,92.075 z m -264.917,-161.351 -1.233,-0.292 a 532757.74,532757.74 0 0 1 -30.02,38.7 h -23.4 v -51.93 h 14.433 v 37.887 l 1.47,0.522 30.288,-38.488 h 23.367 v 51.89 h -14.904 z m 187.996,-0.026 -1.193,-0.31 c -9.93,12.813 -19.858,25.627 -29.476,38.039 H 573.309 V 98.583 h 14.777 v 39.2 l 30.889,-39.43 h 23.009 v 51.189 h -14.702 z m -295.244,7.284 h 39.176 v 10.717 H 332.04 v 9.647 h 41.322 V 150.45 H 317.11 V 98.519 h 57.303 v 11.039 h -42.375 z m 338.914,0.018 h 38.455 v 10.44 H 671.1 v 9.635 h 40.57 v 10.3 H 655.83 V 98.556 h 56.742 v 10.952 h -41.62 z M 545.666,98.416 h 14.301 v 51.189 H 545.666 Z M 312.554,585.913 c 0,0 -10.463,51.999 44.874,114.973 55.342,62.972 96.863,85.871 141.707,97.799 l -0.078,-0.046 0.17,0.046 c 0,0 -35.227,-20.517 -35.227,-51.522 0,-9 1.435,-15.184 3.423,-19.315 2.638,-5.488 6.816,-7.354 10.567,-7.372 3.16,-0.018 5.01,1.281 9.01,2.834 V 555.386 c 0,0 0.433,-2.707 2.863,-5.915 3.5,-4.613 9,-10.243 19.335,-10.3 17.629,0.113 39.802,20.026 39.802,20.026 v 135.964 c 0,13.832 -9.9,30.53 -20.39,36.259 0,0 1.43,0.09 3.744,0.089 6.926,0.002 21.784,-0.79 30.063,-7.115 2.3,2.665 39.418,44.665 105.466,57.589 l -0.032,-0.037 0.18,0.037 c 0,0 -36.531,-43.016 -47.981,-64.348 -2.035,-0.121 -2.332,-40.471 -1.993,-80.79 0.329,-38.92 1.253,-77.818 1.789,-80.509 0,0 3.898,-5.794 13.824,-5.844 11.196,-0.057 30.063,7.195 59.643,38.288 l -10e-4,-10e-4 v 10e-4 c 0,0 -0.78,-1.771 -2.35,-4.908 -8.476,-16.938 -39.974,-73.721 -95.924,-106.725 l -0.003,0.003 -0.005,-0.003 -36.29,30.693 -0.927,0.774 -39.58,-41.967 -0.06,0.006 -0.005,-0.006 c 0,0 -90.232,7.633 -127.92,62.015 l 0.179,-0.065 -0.047,0.065 c 0,0 5.707,-2.221 12.148,-2.342 7.547,-0.138 15.472,2.619 15.472,15.229 v 127.85 c 0,6.529 -4.495,13.853 -14.362,13.825 -8.874,-0.023 -21.614,-5.994 -39.01,-23.843 -36.734,-37.685 -51.99,-73.468 -51.99,-73.468 l -0.025,0.136 -0.06,-0.136 M 513,369.156 c 70.386,0 136.56,27.41 186.33,77.18 49.77,49.771 77.18,115.944 77.18,186.33 0,70.386 -27.41,136.559 -77.18,186.33 -49.77,49.77 -115.944,77.18 -186.33,77.18 -70.386,0 -136.56,-27.41 -186.33,-77.18 -49.77,-49.771 -77.18,-115.944 -77.18,-186.33 0,-70.386 27.41,-136.559 77.18,-186.33 49.77,-49.77 115.944,-77.18 186.33,-77.18" 38 | id="path28" /> 39 | <path 40 | d="m 513,908.307 c 152.232,0 275.641,-123.409 275.641,-275.64 0,-152.233 -123.409,-275.642 -275.641,-275.642 -152.232,0 -275.641,123.41 -275.641,275.641 0,152.232 123.409,275.641 275.641,275.641 m 0,-559.119 c 75.72,0 146.907,29.487 200.449,83.03 53.542,53.541 83.028,124.728 83.028,200.448 0,75.72 -29.486,146.907 -83.028,200.45 -53.542,53.54 -124.729,83.026 -200.449,83.026 -75.72,0 -146.907,-29.486 -200.449,-83.028 -53.542,-53.542 -83.028,-124.73 -83.028,-200.449 0,-75.72 29.486,-146.907 83.028,-200.449 C 366.093,378.674 437.28,349.188 513,349.188" 41 | id="path30" /> 42 | </g> 43 | </svg> 44 | -------------------------------------------------------------------------------- /docs/annotated_dup.js: -------------------------------------------------------------------------------- 1 | var annotated_dup = 2 | [ 3 | [ "mi_heap_area_t", "group__analysis.html#structmi__heap__area__t", "group__analysis_structmi__heap__area__t" ], 4 | [ "mi_stl_allocator", "group__cpp.html#structmi__stl__allocator", null ] 5 | ]; -------------------------------------------------------------------------------- /docs/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/bc_s.png -------------------------------------------------------------------------------- /docs/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/bdwn.png -------------------------------------------------------------------------------- /docs/bench.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"> 3 | <head> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta http-equiv="X-UA-Compatible" content="IE=11"/> 6 | <meta name="generator" content="Doxygen 1.13.1"/> 7 | <meta name="viewport" content="width=device-width, initial-scale=1"/> 8 | <title>mi-malloc: Performance</title> 9 | <link href="tabs.css" rel="stylesheet" type="text/css"/> 10 | <script type="text/javascript" src="jquery.js"></script> 11 | <script type="text/javascript" src="dynsections.js"></script> 12 | <script type="text/javascript" src="clipboard.js"></script> 13 | <link href="navtree.css" rel="stylesheet" type="text/css"/> 14 | <script type="text/javascript" src="navtreedata.js"></script> 15 | <script type="text/javascript" src="navtree.js"></script> 16 | <script type="text/javascript" src="resize.js"></script> 17 | <script type="text/javascript" src="cookie.js"></script> 18 | <link href="search/search.css" rel="stylesheet" type="text/css"/> 19 | <script type="text/javascript" src="search/searchdata.js"></script> 20 | <script type="text/javascript" src="search/search.js"></script> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */ 23 | $(function() { init_search(); }); 24 | /* @license-end */ 25 | </script> 26 | <link href="doxygen.css" rel="stylesheet" type="text/css" /> 27 | <link href="mimalloc-doxygen.css" rel="stylesheet" type="text/css"/> 28 | </head> 29 | <body> 30 | <div id="top"><!-- do not remove this div, it is closed by doxygen! --> 31 | <div id="titlearea"> 32 | <table cellspacing="0" cellpadding="0"> 33 | <tbody> 34 | <tr id="projectrow"> 35 | <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> 36 | <td id="projectalign"> 37 | <div id="projectname">mi-malloc<span id="projectnumber"> 1.8/2.1</span> 38 | </div> 39 | </td> 40 | <td> <div id="MSearchBox" class="MSearchBoxInactive"> 41 | <span class="left"> 42 | <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()"> </span> 43 | <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S" 44 | onfocus="searchBox.OnSearchFieldFocus(true)" 45 | onblur="searchBox.OnSearchFieldFocus(false)" 46 | onkeyup="searchBox.OnSearchFieldChange(event)"/> 47 | </span><span class="right"> 48 | <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> 49 | </span> 50 | </div> 51 | </td> 52 | </tr> 53 | </tbody> 54 | </table> 55 | </div> 56 | <!-- end header part --> 57 | <!-- Generated by Doxygen 1.13.1 --> 58 | <script type="text/javascript"> 59 | /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */ 60 | var searchBox = new SearchBox("searchBox", "search/",'.html'); 61 | /* @license-end */ 62 | </script> 63 | <script type="text/javascript"> 64 | /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */ 65 | $(function() { codefold.init(0); }); 66 | /* @license-end */ 67 | </script> 68 | </div><!-- top --> 69 | <div id="side-nav" class="ui-resizable side-nav-resizable"> 70 | <div id="nav-tree"> 71 | <div id="nav-tree-contents"> 72 | <div id="nav-sync" class="sync"></div> 73 | </div> 74 | </div> 75 | <div id="splitbar" style="-moz-user-select:none;" 76 | class="ui-resizable-handle"> 77 | </div> 78 | </div> 79 | <script type="text/javascript"> 80 | /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */ 81 | $(function(){initNavTree('bench.html',''); initResizable(true); }); 82 | /* @license-end */ 83 | </script> 84 | <div id="doc-content"> 85 | <!-- window showing the filter options --> 86 | <div id="MSearchSelectWindow" 87 | onmouseover="return searchBox.OnSearchSelectShow()" 88 | onmouseout="return searchBox.OnSearchSelectHide()" 89 | onkeydown="return searchBox.OnSearchSelectKey(event)"> 90 | </div> 91 | 92 | <!-- iframe showing the search results (closed by default) --> 93 | <div id="MSearchResultsWindow"> 94 | <div id="MSearchResults"> 95 | <div class="SRPage"> 96 | <div id="SRIndex"> 97 | <div id="SRResults"></div> 98 | <div class="SRStatus" id="Loading">Loading...</div> 99 | <div class="SRStatus" id="Searching">Searching...</div> 100 | <div class="SRStatus" id="NoMatches">No Matches</div> 101 | </div> 102 | </div> 103 | </div> 104 | </div> 105 | 106 | <div><div class="header"> 107 | <div class="headertitle"><div class="title">Performance</div></div> 108 | </div><!--header--> 109 | <div class="contents"> 110 | <div class="textblock"><p>We tested <em>mimalloc</em> against many other top allocators over a wide range of benchmarks, ranging from various real world programs to synthetic benchmarks that see how the allocator behaves under more extreme circumstances.</p> 111 | <p>In our benchmarks, <em>mimalloc</em> always outperforms all other leading allocators (<em>jemalloc</em>, <em>tcmalloc</em>, <em>Hoard</em>, etc) (Jan 2021), and usually uses less memory (up to 25% more in the worst case). A nice property is that it does <em>consistently</em> well over the wide range of benchmarks.</p> 112 | <p>See the <a href="https://github.com/microsoft/mimalloc#Performance">Performance</a> section in the <em>mimalloc</em> repository for benchmark results, or the the technical report for detailed benchmark results. </p> 113 | </div></div><!-- contents --> 114 | </div><!-- PageDoc --> 115 | </div><!-- doc-content --> 116 | <!-- start footer part --> 117 | <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> 118 | <ul> 119 | <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.1 </li> 120 | </ul> 121 | </div> 122 | </body> 123 | </html> 124 | -------------------------------------------------------------------------------- /docs/classes.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"> 3 | <head> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta http-equiv="X-UA-Compatible" content="IE=11"/> 6 | <meta name="generator" content="Doxygen 1.13.1"/> 7 | <meta name="viewport" content="width=device-width, initial-scale=1"/> 8 | <title>mi-malloc: Data Structure Index</title> 9 | <link href="tabs.css" rel="stylesheet" type="text/css"/> 10 | <script type="text/javascript" src="jquery.js"></script> 11 | <script type="text/javascript" src="dynsections.js"></script> 12 | <script type="text/javascript" src="clipboard.js"></script> 13 | <link href="navtree.css" rel="stylesheet" type="text/css"/> 14 | <script type="text/javascript" src="navtreedata.js"></script> 15 | <script type="text/javascript" src="navtree.js"></script> 16 | <script type="text/javascript" src="resize.js"></script> 17 | <script type="text/javascript" src="cookie.js"></script> 18 | <link href="search/search.css" rel="stylesheet" type="text/css"/> 19 | <script type="text/javascript" src="search/searchdata.js"></script> 20 | <script type="text/javascript" src="search/search.js"></script> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */ 23 | $(function() { init_search(); }); 24 | /* @license-end */ 25 | </script> 26 | <link href="doxygen.css" rel="stylesheet" type="text/css" /> 27 | <link href="mimalloc-doxygen.css" rel="stylesheet" type="text/css"/> 28 | </head> 29 | <body> 30 | <div id="top"><!-- do not remove this div, it is closed by doxygen! --> 31 | <div id="titlearea"> 32 | <table cellspacing="0" cellpadding="0"> 33 | <tbody> 34 | <tr id="projectrow"> 35 | <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> 36 | <td id="projectalign"> 37 | <div id="projectname">mi-malloc<span id="projectnumber"> 1.8/2.1</span> 38 | </div> 39 | </td> 40 | <td> <div id="MSearchBox" class="MSearchBoxInactive"> 41 | <span class="left"> 42 | <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()"> </span> 43 | <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S" 44 | onfocus="searchBox.OnSearchFieldFocus(true)" 45 | onblur="searchBox.OnSearchFieldFocus(false)" 46 | onkeyup="searchBox.OnSearchFieldChange(event)"/> 47 | </span><span class="right"> 48 | <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> 49 | </span> 50 | </div> 51 | </td> 52 | </tr> 53 | </tbody> 54 | </table> 55 | </div> 56 | <!-- end header part --> 57 | <!-- Generated by Doxygen 1.13.1 --> 58 | <script type="text/javascript"> 59 | /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */ 60 | var searchBox = new SearchBox("searchBox", "search/",'.html'); 61 | /* @license-end */ 62 | </script> 63 | <script type="text/javascript"> 64 | /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */ 65 | $(function() { codefold.init(0); }); 66 | /* @license-end */ 67 | </script> 68 | </div><!-- top --> 69 | <div id="side-nav" class="ui-resizable side-nav-resizable"> 70 | <div id="nav-tree"> 71 | <div id="nav-tree-contents"> 72 | <div id="nav-sync" class="sync"></div> 73 | </div> 74 | </div> 75 | <div id="splitbar" style="-moz-user-select:none;" 76 | class="ui-resizable-handle"> 77 | </div> 78 | </div> 79 | <script type="text/javascript"> 80 | /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */ 81 | $(function(){initNavTree('classes.html',''); initResizable(true); }); 82 | /* @license-end */ 83 | </script> 84 | <div id="doc-content"> 85 | <!-- window showing the filter options --> 86 | <div id="MSearchSelectWindow" 87 | onmouseover="return searchBox.OnSearchSelectShow()" 88 | onmouseout="return searchBox.OnSearchSelectHide()" 89 | onkeydown="return searchBox.OnSearchSelectKey(event)"> 90 | </div> 91 | 92 | <!-- iframe showing the search results (closed by default) --> 93 | <div id="MSearchResultsWindow"> 94 | <div id="MSearchResults"> 95 | <div class="SRPage"> 96 | <div id="SRIndex"> 97 | <div id="SRResults"></div> 98 | <div class="SRStatus" id="Loading">Loading...</div> 99 | <div class="SRStatus" id="Searching">Searching...</div> 100 | <div class="SRStatus" id="NoMatches">No Matches</div> 101 | </div> 102 | </div> 103 | </div> 104 | </div> 105 | 106 | <div class="header"> 107 | <div class="headertitle"><div class="title">Data Structure Index</div></div> 108 | </div><!--header--> 109 | <div class="contents"> 110 | <div class="qindex"><a class="qindex" href="#letter_M">M</a></div> 111 | <div class="classindex"> 112 | <dl class="classindex even"> 113 | <dt class="alphachar"><a id="letter_M" name="letter_M">M</a></dt> 114 | <dd><a class="el" href="group__analysis.html#structmi__heap__area__t">mi_heap_area_t</a></dd><dd><a class="el" href="group__cpp.html#structmi__stl__allocator">mi_stl_allocator</a></dd></dl> 115 | </div> 116 | </div><!-- contents --> 117 | </div><!-- doc-content --> 118 | <!-- start footer part --> 119 | <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> 120 | <ul> 121 | <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.1 </li> 122 | </ul> 123 | </div> 124 | </body> 125 | </html> 126 | -------------------------------------------------------------------------------- /docs/clipboard.js: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | The code below is based on the Doxygen Awesome project, see 4 | https://github.com/jothepro/doxygen-awesome-css 5 | 6 | MIT License 7 | 8 | Copyright (c) 2021 - 2022 jothepro 9 | 10 | Permission is hereby granted, free of charge, to any person obtaining a copy 11 | of this software and associated documentation files (the "Software"), to deal 12 | in the Software without restriction, including without limitation the rights 13 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | copies of the Software, and to permit persons to whom the Software is 15 | furnished to do so, subject to the following conditions: 16 | 17 | The above copyright notice and this permission notice shall be included in all 18 | copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 26 | SOFTWARE. 27 | 28 | */ 29 | 30 | let clipboard_title = "Copy to clipboard" 31 | let clipboard_icon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>` 32 | let clipboard_successIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z"/></svg>` 33 | let clipboard_successDuration = 1000 34 | 35 | $(function() { 36 | if(navigator.clipboard) { 37 | const fragments = document.getElementsByClassName("fragment") 38 | for(const fragment of fragments) { 39 | const clipboard_div = document.createElement("div") 40 | clipboard_div.classList.add("clipboard") 41 | clipboard_div.innerHTML = clipboard_icon 42 | clipboard_div.title = clipboard_title 43 | $(clipboard_div).click(function() { 44 | const content = this.parentNode.cloneNode(true) 45 | // filter out line number and folded fragments from file listings 46 | content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) 47 | let text = content.textContent 48 | // remove trailing newlines and trailing spaces from empty lines 49 | text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') 50 | navigator.clipboard.writeText(text); 51 | this.classList.add("success") 52 | this.innerHTML = clipboard_successIcon 53 | window.setTimeout(() => { // switch back to normal icon after timeout 54 | this.classList.remove("success") 55 | this.innerHTML = clipboard_icon 56 | }, clipboard_successDuration); 57 | }) 58 | fragment.insertBefore(clipboard_div, fragment.firstChild) 59 | } 60 | } 61 | }) 62 | -------------------------------------------------------------------------------- /docs/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/closed.png -------------------------------------------------------------------------------- /docs/cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Cookie helper functions 3 | Copyright (c) 2023 Dimitri van Heesch 4 | Released under MIT license. 5 | */ 6 | let Cookie = { 7 | cookie_namespace: 'doxygen_', 8 | 9 | readSetting(cookie,defVal) { 10 | if (window.chrome) { 11 | const val = localStorage.getItem(this.cookie_namespace+cookie) || 12 | sessionStorage.getItem(this.cookie_namespace+cookie); 13 | if (val) return val; 14 | } else { 15 | let myCookie = this.cookie_namespace+cookie+"="; 16 | if (document.cookie) { 17 | const index = document.cookie.indexOf(myCookie); 18 | if (index != -1) { 19 | const valStart = index + myCookie.length; 20 | let valEnd = document.cookie.indexOf(";", valStart); 21 | if (valEnd == -1) { 22 | valEnd = document.cookie.length; 23 | } 24 | return document.cookie.substring(valStart, valEnd); 25 | } 26 | } 27 | } 28 | return defVal; 29 | }, 30 | 31 | writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete 32 | if (window.chrome) { 33 | if (days==0) { 34 | sessionStorage.setItem(this.cookie_namespace+cookie,val); 35 | } else { 36 | localStorage.setItem(this.cookie_namespace+cookie,val); 37 | } 38 | } else { 39 | let date = new Date(); 40 | date.setTime(date.getTime()+(days*24*60*60*1000)); 41 | const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; 42 | document.cookie = this.cookie_namespace + cookie + "=" + 43 | val + "; SameSite=Lax;" + expiration + "path=/"; 44 | } 45 | }, 46 | 47 | eraseSetting(cookie) { 48 | if (window.chrome) { 49 | if (localStorage.getItem(this.cookie_namespace+cookie)) { 50 | localStorage.removeItem(this.cookie_namespace+cookie); 51 | } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { 52 | sessionStorage.removeItem(this.cookie_namespace+cookie); 53 | } 54 | } else { 55 | this.writeSetting(cookie,'',-1); 56 | } 57 | }, 58 | } 59 | -------------------------------------------------------------------------------- /docs/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/doc.png -------------------------------------------------------------------------------- /docs/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/doxygen.png -------------------------------------------------------------------------------- /docs/folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/folderclosed.png -------------------------------------------------------------------------------- /docs/folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/folderopen.png -------------------------------------------------------------------------------- /docs/group__aligned.js: -------------------------------------------------------------------------------- 1 | var group__aligned = 2 | [ 3 | [ "mi_calloc_aligned", "group__aligned.html#ga424ef386fb1f9f8e0a86ab53f16eaaf1", null ], 4 | [ "mi_calloc_aligned_at", "group__aligned.html#ga977f96bd2c5c141bcd70e6685c90d6c3", null ], 5 | [ "mi_malloc_aligned", "group__aligned.html#ga69578ff1a98ca16e1dcd02c0995cd65c", null ], 6 | [ "mi_malloc_aligned_at", "group__aligned.html#ga2022f71b95a7cd6cce1b6e07752ae8ca", null ], 7 | [ "mi_realloc_aligned", "group__aligned.html#ga5d7a46d054b4d7abe9d8d2474add2edf", null ], 8 | [ "mi_realloc_aligned_at", "group__aligned.html#gad06dcf2bb8faadb2c8ea61ee5d24bbf6", null ], 9 | [ "mi_zalloc_aligned", "group__aligned.html#gaac7d0beb782f9b9ac31f47492b130f82", null ], 10 | [ "mi_zalloc_aligned_at", "group__aligned.html#ga7c1778805ce50ebbf02ccbd5e39d5dba", null ] 11 | ]; -------------------------------------------------------------------------------- /docs/group__analysis.js: -------------------------------------------------------------------------------- 1 | var group__analysis = 2 | [ 3 | [ "mi_heap_area_t", "group__analysis.html#structmi__heap__area__t", [ 4 | [ "block_size", "group__analysis.html#a332a6c14d736a99699d5453a1cb04b41", null ], 5 | [ "blocks", "group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8", null ], 6 | [ "committed", "group__analysis.html#ab47526df656d8837ec3e97f11b83f835", null ], 7 | [ "full_block_size", "group__analysis.html#ab53664e31d7fe2564f8d42041ef75cb3", null ], 8 | [ "heap_tag", "group__analysis.html#a2b7a0c92ece8daf46b558efc990ebdc1", null ], 9 | [ "reserved", "group__analysis.html#ae848a3e6840414891035423948ca0383", null ], 10 | [ "used", "group__analysis.html#ab820302c5cd0df133eb8e51650a008b4", null ] 11 | ] ], 12 | [ "mi_block_visit_fun", "group__analysis.html#ga8255dc9371e6b299d9802a610c4e34ec", null ], 13 | [ "mi_abandoned_visit_blocks", "group__analysis.html#ga6a4865a887b2ec5247854af61562503c", null ], 14 | [ "mi_check_owned", "group__analysis.html#ga628c237489c2679af84a4d0d143b3dd5", null ], 15 | [ "mi_heap_check_owned", "group__analysis.html#ga0d67c1789faaa15ff366c024fcaf6377", null ], 16 | [ "mi_heap_contains_block", "group__analysis.html#gaa862aa8ed8d57d84cae41fc1022d71af", null ], 17 | [ "mi_heap_visit_blocks", "group__analysis.html#ga70c46687dc6e9dc98b232b02646f8bed", null ] 18 | ]; -------------------------------------------------------------------------------- /docs/group__analysis_structmi__heap__area__t.js: -------------------------------------------------------------------------------- 1 | var group__analysis_structmi__heap__area__t = 2 | [ 3 | [ "block_size", "group__analysis.html#a332a6c14d736a99699d5453a1cb04b41", null ], 4 | [ "blocks", "group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8", null ], 5 | [ "committed", "group__analysis.html#ab47526df656d8837ec3e97f11b83f835", null ], 6 | [ "full_block_size", "group__analysis.html#ab53664e31d7fe2564f8d42041ef75cb3", null ], 7 | [ "heap_tag", "group__analysis.html#a2b7a0c92ece8daf46b558efc990ebdc1", null ], 8 | [ "reserved", "group__analysis.html#ae848a3e6840414891035423948ca0383", null ], 9 | [ "used", "group__analysis.html#ab820302c5cd0df133eb8e51650a008b4", null ] 10 | ]; -------------------------------------------------------------------------------- /docs/group__cpp.js: -------------------------------------------------------------------------------- 1 | var group__cpp = 2 | [ 3 | [ "mi_stl_allocator< T >", "group__cpp.html#structmi__stl__allocator", null ], 4 | [ "mi_new", "group__cpp.html#ga633d96e3bc7011f960df9f3b2731fc6a", null ], 5 | [ "mi_new_aligned", "group__cpp.html#ga79c54da0b4b4ce9fcc11d2f6ef6675f8", null ], 6 | [ "mi_new_aligned_nothrow", "group__cpp.html#ga92ae00b6dd64406c7e64557711ec04b7", null ], 7 | [ "mi_new_n", "group__cpp.html#gadd11b85c15d21d308386844b5233856c", null ], 8 | [ "mi_new_nothrow", "group__cpp.html#ga5cb4f120d1f7296074256215aa9a9e54", null ], 9 | [ "mi_new_realloc", "group__cpp.html#ga6867d89baf992728e0cc20a1f47db4d0", null ], 10 | [ "mi_new_reallocn", "group__cpp.html#gaace912ce086682d56f3ce9f7638d9d67", null ] 11 | ]; -------------------------------------------------------------------------------- /docs/group__extended.js: -------------------------------------------------------------------------------- 1 | var group__extended = 2 | [ 3 | [ "MI_SMALL_SIZE_MAX", "group__extended.html#ga1ea64283508718d9d645c38efc2f4305", null ], 4 | [ "mi_arena_id_t", "group__extended.html#ga99fe38650d0b02e0e0f89ee024db91d3", null ], 5 | [ "mi_deferred_free_fun", "group__extended.html#ga292a45f7dbc7cd23c5352ce1f0002816", null ], 6 | [ "mi_error_fun", "group__extended.html#ga83fc6a688b322261e1c2deab000b0591", null ], 7 | [ "mi_output_fun", "group__extended.html#gadf31cea7d0332a81c8b882cbbdbadb8d", null ], 8 | [ "mi_subproc_id_t", "group__extended.html#ga8c0bcd1fee27c7641e9c3c0d991b3b7d", null ], 9 | [ "mi_arena_area", "group__extended.html#ga9a25a00a22151619a0be91a10af7787f", null ], 10 | [ "mi_collect", "group__extended.html#ga421430e2226d7d468529cec457396756", null ], 11 | [ "mi_debug_show_arenas", "group__extended.html#gad7439207f8f71fb6c382a9ea20b997e7", null ], 12 | [ "mi_good_size", "group__extended.html#gac057927cd06c854b45fe7847e921bd47", null ], 13 | [ "mi_heap_new_ex", "group__extended.html#ga3ae360583f4351aa5267ee7e43008faf", null ], 14 | [ "mi_heap_new_in_arena", "group__extended.html#gaaf2d9976576d5efd5544be12848af949", null ], 15 | [ "mi_is_in_heap_region", "group__extended.html#ga5f071b10d4df1c3658e04e7fd67a94e6", null ], 16 | [ "mi_is_redirected", "group__extended.html#gaad25050b19f30cd79397b227e0157a3f", null ], 17 | [ "mi_malloc_small", "group__extended.html#ga7f050bc6b897da82692174f5fce59cde", null ], 18 | [ "mi_manage_os_memory", "group__extended.html#ga4c6486a1fdcd7a423b5f25fe4be8e0cf", null ], 19 | [ "mi_manage_os_memory_ex", "group__extended.html#ga41ce8525d77bbb60f618fa1029994f6e", null ], 20 | [ "mi_process_info", "group__extended.html#ga7d862c2affd5790381da14eb102a364d", null ], 21 | [ "mi_register_deferred_free", "group__extended.html#ga3460a6ca91af97be4058f523d3cb8ece", null ], 22 | [ "mi_register_error", "group__extended.html#gaa1d55e0e894be240827e5d87ec3a1f45", null ], 23 | [ "mi_register_output", "group__extended.html#gae5b17ff027cd2150b43a33040250cf3f", null ], 24 | [ "mi_reserve_huge_os_pages_at", "group__extended.html#ga7795a13d20087447281858d2c771cca1", null ], 25 | [ "mi_reserve_huge_os_pages_at_ex", "group__extended.html#ga591aab1c2bc2ca920e33f0f9f9cb5c52", null ], 26 | [ "mi_reserve_huge_os_pages_interleave", "group__extended.html#ga3132f521fb756fc0e8ec0b74fb58df50", null ], 27 | [ "mi_reserve_os_memory", "group__extended.html#ga00ec3324b6b2591c7fe3677baa30a767", null ], 28 | [ "mi_reserve_os_memory_ex", "group__extended.html#ga32f519797fd9a81acb4f52d36e6d751b", null ], 29 | [ "mi_stats_merge", "group__extended.html#ga854b1de8cb067c7316286c28b2fcd3d1", null ], 30 | [ "mi_stats_print", "group__extended.html#ga2d126e5c62d3badc35445e5d84166df2", null ], 31 | [ "mi_stats_print_out", "group__extended.html#ga537f13b299ddf801e49a5a94fde02c79", null ], 32 | [ "mi_stats_reset", "group__extended.html#ga3bb8468b8cfcc6e2a61d98aee85c5f99", null ], 33 | [ "mi_subproc_add_current_thread", "group__extended.html#gadbc53414eb68b275588ec001ce1ddc7c", null ], 34 | [ "mi_subproc_delete", "group__extended.html#gaa7d263e9429bac9ac8345c9d25de610e", null ], 35 | [ "mi_subproc_main", "group__extended.html#ga2ecba0d7ebdc99e71bb985c4a1609806", null ], 36 | [ "mi_subproc_new", "group__extended.html#ga8068cac328e41fa2170faef707315243", null ], 37 | [ "mi_thread_done", "group__extended.html#ga0ae4581e85453456a0d658b2b98bf7bf", null ], 38 | [ "mi_thread_init", "group__extended.html#gaf8e73efc2cbca9ebfdfb166983a04c17", null ], 39 | [ "mi_thread_stats_print_out", "group__extended.html#gab1dac8476c46cb9eecab767eb40c1525", null ], 40 | [ "mi_usable_size", "group__extended.html#ga089c859d9eddc5f9b4bd946cd53cebee", null ], 41 | [ "mi_zalloc_small", "group__extended.html#ga51c47637e81df0e2f13a2d7a2dec123e", null ] 42 | ]; -------------------------------------------------------------------------------- /docs/group__heap.js: -------------------------------------------------------------------------------- 1 | var group__heap = 2 | [ 3 | [ "mi_heap_t", "group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2", null ], 4 | [ "mi_heap_calloc", "group__heap.html#gac0098aaf231d3e9586c73136d5df95da", null ], 5 | [ "mi_heap_calloc_aligned", "group__heap.html#gacafcc26df827c7a7de5e850217566108", null ], 6 | [ "mi_heap_calloc_aligned_at", "group__heap.html#gaa42ec2079989c4374f2c331d9b35f4e4", null ], 7 | [ "mi_heap_collect", "group__heap.html#ga7922f7495cde30b1984d0e6072419298", null ], 8 | [ "mi_heap_delete", "group__heap.html#ga2ab1af8d438819b55319c7ef51d1e409", null ], 9 | [ "mi_heap_destroy", "group__heap.html#ga9f9c0844edb9717f4feacd79116b8e0d", null ], 10 | [ "mi_heap_get_backing", "group__heap.html#gac6ac9f0e7be9ab4ff70acfc8dad1235a", null ], 11 | [ "mi_heap_get_default", "group__heap.html#ga14c667a6e2c5d28762d8cb7d4e057909", null ], 12 | [ "mi_heap_malloc", "group__heap.html#gab374e206c7034e0d899fb934e4f4a863", null ], 13 | [ "mi_heap_malloc_aligned", "group__heap.html#ga33f4f05b7fea7af2113c62a4bf882cc5", null ], 14 | [ "mi_heap_malloc_aligned_at", "group__heap.html#gae7ffc045c3996497a7f3a5f6fe7b8aaa", null ], 15 | [ "mi_heap_malloc_small", "group__heap.html#ga012c5c8abe22b10043de39ff95909541", null ], 16 | [ "mi_heap_mallocn", "group__heap.html#gab0f755c0b21c387fe8e9024200faa372", null ], 17 | [ "mi_heap_new", "group__heap.html#gaa718bb226ec0546ba6d1b6cb32179f3a", null ], 18 | [ "mi_heap_realloc", "group__heap.html#gac5252d6a2e510bd349e4fcb452e6a93a", null ], 19 | [ "mi_heap_realloc_aligned", "group__heap.html#gaccf8c249872f30bf1c2493a09197d734", null ], 20 | [ "mi_heap_realloc_aligned_at", "group__heap.html#ga6df988a7219d5707f010d5f3eb0dc3f5", null ], 21 | [ "mi_heap_reallocf", "group__heap.html#gae7cd171425bee04c683c65a3701f0b4a", null ], 22 | [ "mi_heap_reallocn", "group__heap.html#gaccf7bfe10ce510a000d3547d9cf7fa29", null ], 23 | [ "mi_heap_realpath", "group__heap.html#ga55545a3ec6da29c5b4f62e540ecac1e2", null ], 24 | [ "mi_heap_set_default", "group__heap.html#ga349b677dec7da5eacdbc7a385bd62a4a", null ], 25 | [ "mi_heap_strdup", "group__heap.html#ga5754e09ccc51dd6bc73885bb6ea21b7a", null ], 26 | [ "mi_heap_strndup", "group__heap.html#gad224df78f1fbee942df8adf023e12cf3", null ], 27 | [ "mi_heap_zalloc", "group__heap.html#gabebc796399619d964d8db77aa835e8c1", null ], 28 | [ "mi_heap_zalloc_aligned", "group__heap.html#ga6466bde8b5712aa34e081a8317f9f471", null ], 29 | [ "mi_heap_zalloc_aligned_at", "group__heap.html#ga484e3d01cd174f78c7e53370e5a7c819", null ] 30 | ]; -------------------------------------------------------------------------------- /docs/group__malloc.js: -------------------------------------------------------------------------------- 1 | var group__malloc = 2 | [ 3 | [ "mi_calloc", "group__malloc.html#ga6686568014b54d1e6c7ac64a076e4f56", null ], 4 | [ "mi_expand", "group__malloc.html#ga19299856216cfbb08e2628593654dfb0", null ], 5 | [ "mi_free", "group__malloc.html#gaf2c7b89c327d1f60f59e68b9ea644d95", null ], 6 | [ "mi_malloc", "group__malloc.html#gae1dd97b542420c87ae085e822b1229e8", null ], 7 | [ "mi_mallocn", "group__malloc.html#ga61f46bade3db76ca24aaafedc40de7b6", null ], 8 | [ "mi_realloc", "group__malloc.html#ga0621af6a5e3aa384e6a1b548958bf583", null ], 9 | [ "mi_reallocf", "group__malloc.html#ga4dc3a4067037b151a64629fe8a332641", null ], 10 | [ "mi_reallocn", "group__malloc.html#ga8bddfb4a1270a0854bbcf44cb3980467", null ], 11 | [ "mi_realpath", "group__malloc.html#ga94c3afcc086e85d75a57e9f76b9b71dd", null ], 12 | [ "mi_recalloc", "group__malloc.html#ga23a0fbb452b5dce8e31fab1a1958cacc", null ], 13 | [ "mi_strdup", "group__malloc.html#ga245ac90ebc2cfdd17de599e5fea59889", null ], 14 | [ "mi_strndup", "group__malloc.html#ga486d0d26b3b3794f6d1cdb41a9aed92d", null ], 15 | [ "mi_zalloc", "group__malloc.html#gae6e38c4403247a7b40d80419e093bfb8", null ] 16 | ]; -------------------------------------------------------------------------------- /docs/group__options.js: -------------------------------------------------------------------------------- 1 | var group__options = 2 | [ 3 | [ "mi_option_t", "group__options.html#gafebf7ed116adb38ae5218bc3ce06884c", [ 4 | [ "mi_option_show_errors", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4822e5c00732c5984b32a032837f0", null ], 5 | [ "mi_option_show_stats", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0957ef73b2550764b4840edf48422fda", null ], 6 | [ "mi_option_verbose", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7c8b7bf5281c581bad64f5daa6442777", null ], 7 | [ "mi_option_max_errors", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caec6ecbe29d46a48205ed8823a8a52a6a", null ], 8 | [ "mi_option_max_warnings", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caf9595921087e942602ee079158762665", null ], 9 | [ "mi_option_reserve_huge_os_pages", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caca7ed041be3b0b9d0b82432c7bf41af2", null ], 10 | [ "mi_option_reserve_huge_os_pages_at", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa13e7926d4339d2aa6fbf61d4473fd5c", null ], 11 | [ "mi_option_reserve_os_memory", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4999c828cf79a0fb2de65d23f7333", null ], 12 | [ "mi_option_allow_large_os_pages", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7cc4804ced69004fa42a9a136a9ba556", null ], 13 | [ "mi_option_purge_decommits", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca9d15c5e3d2115eef681c17e4dd5ab9a4", null ], 14 | [ "mi_option_arena_reserve", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cab1c88e23ae290bbeec824038a97959de", null ], 15 | [ "mi_option_os_tag", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4b74ae2a69e445de6c2361b73c1d14bf", null ], 16 | [ "mi_option_retry_on_oom", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca8f51df355bf6651db899e6085b54865e", null ], 17 | [ "mi_option_eager_commit", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca1e8de72c93da7ff22d91e1e27b52ac2b", null ], 18 | [ "mi_option_eager_commit_delay", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca17a190c25be381142d87e0468c4c068c", null ], 19 | [ "mi_option_arena_eager_commit", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafd0c5ddbc4b59fd8b5216871728167a5", null ], 20 | [ "mi_option_abandoned_page_purge", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca11e62ed69200a489a5be955582078c0c", null ], 21 | [ "mi_option_purge_delay", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cadd351e615acd8563529c20a347be7290", null ], 22 | [ "mi_option_use_numa_nodes", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0ac33a18f6b659fcfaf44efb0bab1b74", null ], 23 | [ "mi_option_disallow_os_alloc", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cadcfb5a09580361b1be65901d2d812de6", null ], 24 | [ "mi_option_limit_os_alloc", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca9fa61bd9668479f8452d2195759444cc", null ], 25 | [ "mi_option_max_segment_reclaim", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa9ad9005d7017c8c30ad2d6ba31db909", null ], 26 | [ "mi_option_destroy_on_exit", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca6364331e305e7d3c0218b058ff3afc88", null ], 27 | [ "mi_option_arena_purge_mult", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca8236501f1ab45d26e6fd885d191a2b5e", null ], 28 | [ "mi_option_abandoned_reclaim_on_free", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca009e4b5684922ce664d73d2a8e1698d9", null ], 29 | [ "mi_option_purge_extend_delay", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca02005f164bdf03f5f00c5be726adf487", null ], 30 | [ "mi_option_disallow_arena_alloc", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caeae1696100e4057ffc4182730cc04e40", null ], 31 | [ "mi_option_visit_abandoned", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca38c67733a3956a1f4eeaca89fab9e78e", null ], 32 | [ "_mi_option_last", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca5b4357b74be0d87568036c32eb1a2e4a", null ] 33 | ] ], 34 | [ "mi_option_disable", "group__options.html#gaebf6ff707a2e688ebb1a2296ca564054", null ], 35 | [ "mi_option_enable", "group__options.html#ga04180ae41b0d601421dd62ced40ca050", null ], 36 | [ "mi_option_get", "group__options.html#ga7e8af195cc81d3fa64ccf2662caa565a", null ], 37 | [ "mi_option_get_clamp", "group__options.html#ga96ad9c406338bd314cfe878cfc9bf723", null ], 38 | [ "mi_option_get_size", "group__options.html#ga274db5a6ac87cc24ef0b23e7006ed02c", null ], 39 | [ "mi_option_is_enabled", "group__options.html#ga459ad98f18b3fc9275474807fe0ca188", null ], 40 | [ "mi_option_set", "group__options.html#gaf84921c32375e25754dc2ee6a911fa60", null ], 41 | [ "mi_option_set_default", "group__options.html#ga7ef623e440e6e5545cb08c94e71e4b90", null ], 42 | [ "mi_option_set_enabled", "group__options.html#ga9a13d05fcb77489cb06d4d017ebd8bed", null ], 43 | [ "mi_option_set_enabled_default", "group__options.html#ga65518b69ec5d32336b50e07f74b3f629", null ] 44 | ]; -------------------------------------------------------------------------------- /docs/group__posix.js: -------------------------------------------------------------------------------- 1 | var group__posix = 2 | [ 3 | [ "mi__expand", "group__posix.html#ga66bcfeb4faedbb42b796bc680821ef84", null ], 4 | [ "mi__posix_memalign", "group__posix.html#gad5a69c8fea96aa2b7a7c818c2130090a", null ], 5 | [ "mi_aligned_alloc", "group__posix.html#ga430ed1513f0571ff83be00ec58a98ee0", null ], 6 | [ "mi_aligned_offset_recalloc", "group__posix.html#ga16570deddd559001b44953eedbad0084", null ], 7 | [ "mi_aligned_recalloc", "group__posix.html#gaf82cbb4b4f24acf723348628451798d3", null ], 8 | [ "mi_cfree", "group__posix.html#ga705dc7a64bffacfeeb0141501a5c35d7", null ], 9 | [ "mi_dupenv_s", "group__posix.html#gab41369c1a1da7504013a7a0b1d4dd958", null ], 10 | [ "mi_free_aligned", "group__posix.html#ga0d28d5cf61e6bfbb18c63092939fe5c9", null ], 11 | [ "mi_free_size", "group__posix.html#gae01389eedab8d67341ff52e2aad80ebb", null ], 12 | [ "mi_free_size_aligned", "group__posix.html#ga72e9d7ffb5fe94d69bc722c8506e27bc", null ], 13 | [ "mi_malloc_good_size", "group__posix.html#ga9d23ac7885fed7413c11d8e0ffa31071", null ], 14 | [ "mi_malloc_size", "group__posix.html#ga4531c9e775bb3ae12db57c1ba8a5d7de", null ], 15 | [ "mi_malloc_usable_size", "group__posix.html#ga06d07cf357bbac5c73ba5d0c0c421e17", null ], 16 | [ "mi_mbsdup", "group__posix.html#ga7b82a44094fdec4d2084eb4288a979b0", null ], 17 | [ "mi_memalign", "group__posix.html#ga726867f13fd29ca36064954c0285b1d8", null ], 18 | [ "mi_posix_memalign", "group__posix.html#gacff84f226ba9feb2031b8992e5579447", null ], 19 | [ "mi_pvalloc", "group__posix.html#ga644bebccdbb2821542dd8c7e7641f476", null ], 20 | [ "mi_reallocarr", "group__posix.html#ga7e1934d60a3e697950eeb48e042bfad5", null ], 21 | [ "mi_reallocarray", "group__posix.html#gadfeccb72748a2f6305474a37d9d57bce", null ], 22 | [ "mi_valloc", "group__posix.html#ga50cafb9722020402f065de93799f64ca", null ], 23 | [ "mi_wcsdup", "group__posix.html#gaa9fd7f25c9ac3a20e89b33bd6e383fcf", null ], 24 | [ "mi_wdupenv_s", "group__posix.html#ga6ac6a6a8f3c96f1af24bb8d0439cbbd1", null ] 25 | ]; -------------------------------------------------------------------------------- /docs/group__typed.js: -------------------------------------------------------------------------------- 1 | var group__typed = 2 | [ 3 | [ "mi_calloc_tp", "group__typed.html#gae80c47c9d4cab10961fff1a8ac98fc07", null ], 4 | [ "mi_heap_calloc_tp", "group__typed.html#ga4e5d1f1707c90e5f55e023ac5f45fe74", null ], 5 | [ "mi_heap_malloc_tp", "group__typed.html#ga653bcb24ac495bc19940ecd6898f9cd7", null ], 6 | [ "mi_heap_mallocn_tp", "group__typed.html#ga6b75cb9c4b9c647661d0924552dc6e83", null ], 7 | [ "mi_heap_reallocn_tp", "group__typed.html#gaf213d5422ec35e7f6caad827c79bc948", null ], 8 | [ "mi_heap_recalloc_tp", "group__typed.html#ga3e50a1600958fcaf1a7f3560c9174f9e", null ], 9 | [ "mi_heap_zalloc_tp", "group__typed.html#gad6e87e86e994aa14416ae9b5d4c188fe", null ], 10 | [ "mi_malloc_tp", "group__typed.html#ga0619a62c5fd886f1016030abe91f0557", null ], 11 | [ "mi_mallocn_tp", "group__typed.html#gae5cb6e0fafc9f23169c5622e077afe8b", null ], 12 | [ "mi_reallocn_tp", "group__typed.html#ga1158b49a55dfa81f58a4426a7578f523", null ], 13 | [ "mi_zalloc_tp", "group__typed.html#gac77a61bdaf680a803785fe307820b48c", null ] 14 | ]; -------------------------------------------------------------------------------- /docs/group__zeroinit.js: -------------------------------------------------------------------------------- 1 | var group__zeroinit = 2 | [ 3 | [ "mi_heap_recalloc", "group__zeroinit.html#gad1a0d325d930eeb80f25e3fea37aacde", null ], 4 | [ "mi_heap_recalloc_aligned", "group__zeroinit.html#ga87ddd674bf1c67237d780d0b9e0f0f32", null ], 5 | [ "mi_heap_recalloc_aligned_at", "group__zeroinit.html#ga07b5bcbaf00d0d2e598c232982588496", null ], 6 | [ "mi_heap_rezalloc", "group__zeroinit.html#ga8d8b7ebb24b513cd84d1a696048da60d", null ], 7 | [ "mi_heap_rezalloc_aligned", "group__zeroinit.html#ga5129f6dc46ee1613d918820a8a0533a7", null ], 8 | [ "mi_heap_rezalloc_aligned_at", "group__zeroinit.html#ga2bafa79c3f98ea74882349d44cffa5d9", null ], 9 | [ "mi_recalloc_aligned", "group__zeroinit.html#ga3e2169b48683aa0ab64f813fd68d839e", null ], 10 | [ "mi_recalloc_aligned_at", "group__zeroinit.html#gaae25e4ddedd4e0fb61b1a8bd5d452750", null ], 11 | [ "mi_rezalloc", "group__zeroinit.html#gadfd34cd7b4f2bbda7ae06367a6360756", null ], 12 | [ "mi_rezalloc_aligned", "group__zeroinit.html#ga4d02404fe1e7db00beb65f185e012caa", null ], 13 | [ "mi_rezalloc_aligned_at", "group__zeroinit.html#ga6843a88285bbfcc3bdfccc60aafd1270", null ] 14 | ]; -------------------------------------------------------------------------------- /docs/mimalloc-doxygen.css: -------------------------------------------------------------------------------- 1 | #projectlogo img { 2 | padding: 1ex; 3 | } 4 | tt, code, kbd, samp, div.memproto, div.fragment, div.line, table.memname { 5 | font-family: Consolas, Monaco, Inconsolata, "Courier New", monospace; 6 | } 7 | .image img, .textblock img { 8 | max-width: 99%; 9 | max-height: 350px; 10 | } 11 | table.memname, .memname{ 12 | font-weight: bold; 13 | } 14 | code { 15 | background-color: #EEE; 16 | padding: 0ex 0.25ex; 17 | } 18 | body { 19 | margin: 1ex 1ex 0ex 1ex; 20 | border: 1px solid black; 21 | } 22 | .contents table, .contents div, .contents p, .contents dl { 23 | font-size: 16px; 24 | line-height: 1.44; 25 | } 26 | body #nav-tree .label { 27 | font-size: 14px; 28 | } 29 | a{ 30 | text-decoration: underline; 31 | } 32 | #side-nav { 33 | margin-left: 1ex; 34 | border-left: 1px solid black; 35 | } 36 | #nav-tree { 37 | padding-left: 1ex; 38 | } 39 | #nav-path { 40 | display: none; 41 | } 42 | div.fragment { 43 | background-color: #EEE; 44 | padding: 0.25ex 0.5ex; 45 | border-color: black; 46 | } 47 | #nav-sync img { 48 | display: none; 49 | } 50 | h1,h2,h3,h4,h5,h6 { 51 | transition:none; 52 | } 53 | .memtitle { 54 | background-image: none; 55 | background-color: #EEE; 56 | } 57 | table.memproto, .memproto { 58 | text-shadow: none; 59 | font-size: 110%; 60 | } 61 | -------------------------------------------------------------------------------- /docs/modules.js: -------------------------------------------------------------------------------- 1 | var modules = 2 | [ 3 | [ "Basic Allocation", "group__malloc.html", "group__malloc" ], 4 | [ "Extended Functions", "group__extended.html", "group__extended" ], 5 | [ "Aligned Allocation", "group__aligned.html", "group__aligned" ], 6 | [ "Heap Allocation", "group__heap.html", "group__heap" ], 7 | [ "Zero initialized re-allocation", "group__zeroinit.html", "group__zeroinit" ], 8 | [ "Typed Macros", "group__typed.html", "group__typed" ], 9 | [ "Heap Introspection", "group__analysis.html", "group__analysis" ], 10 | [ "Runtime Options", "group__options.html", "group__options" ], 11 | [ "Posix", "group__posix.html", "group__posix" ], 12 | [ "C++ wrappers", "group__cpp.html", "group__cpp" ] 13 | ]; -------------------------------------------------------------------------------- /docs/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/nav_f.png -------------------------------------------------------------------------------- /docs/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/nav_g.png -------------------------------------------------------------------------------- /docs/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/nav_h.png -------------------------------------------------------------------------------- /docs/navtree.css: -------------------------------------------------------------------------------- 1 | #nav-tree .children_ul { 2 | margin:0; 3 | padding:4px; 4 | } 5 | 6 | #nav-tree ul { 7 | list-style:none outside none; 8 | margin:0px; 9 | padding:0px; 10 | } 11 | 12 | #nav-tree li { 13 | white-space:nowrap; 14 | margin:0px; 15 | padding:0px; 16 | } 17 | 18 | #nav-tree .plus { 19 | margin:0px; 20 | } 21 | 22 | #nav-tree .selected { 23 | background-image: url('tab_a.png'); 24 | background-repeat:repeat-x; 25 | color: white; 26 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); 27 | } 28 | 29 | #nav-tree .selected .arrow { 30 | color: #5B6364; 31 | text-shadow: none; 32 | } 33 | 34 | #nav-tree img { 35 | margin:0px; 36 | padding:0px; 37 | border:0px; 38 | vertical-align: middle; 39 | } 40 | 41 | #nav-tree a { 42 | text-decoration:none; 43 | padding:0px; 44 | margin:0px; 45 | } 46 | 47 | #nav-tree .label { 48 | margin:0px; 49 | padding:0px; 50 | font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; 51 | } 52 | 53 | #nav-tree .label a { 54 | padding:2px; 55 | } 56 | 57 | #nav-tree .selected a { 58 | text-decoration:none; 59 | color:white; 60 | } 61 | 62 | #nav-tree .children_ul { 63 | margin:0px; 64 | padding:0px; 65 | } 66 | 67 | #nav-tree .item { 68 | margin:0px; 69 | padding:0px; 70 | } 71 | 72 | #nav-tree { 73 | padding: 0px 0px; 74 | font-size:14px; 75 | overflow:auto; 76 | } 77 | 78 | #doc-content { 79 | overflow:auto; 80 | display:block; 81 | padding:0px; 82 | margin:0px; 83 | -webkit-overflow-scrolling : touch; /* iOS 5+ */ 84 | } 85 | 86 | #side-nav { 87 | padding:0 6px 0 0; 88 | margin: 0px; 89 | display:block; 90 | position: absolute; 91 | left: 0px; 92 | width: $width; 93 | overflow : hidden; 94 | } 95 | 96 | .ui-resizable .ui-resizable-handle { 97 | display:block; 98 | } 99 | 100 | .ui-resizable-e { 101 | background-image:url('splitbar.png'); 102 | background-size:100%; 103 | background-repeat:repeat-y; 104 | background-attachment: scroll; 105 | cursor:ew-resize; 106 | height:100%; 107 | right:0; 108 | top:0; 109 | width:6px; 110 | } 111 | 112 | .ui-resizable-handle { 113 | display:none; 114 | font-size:0.1px; 115 | position:absolute; 116 | z-index:1; 117 | } 118 | 119 | #nav-tree-contents { 120 | margin: 6px 0px 0px 0px; 121 | } 122 | 123 | #nav-tree { 124 | background-repeat:repeat-x; 125 | background-color: #F2F3F3; 126 | -webkit-overflow-scrolling : touch; /* iOS 5+ */ 127 | } 128 | 129 | #nav-sync { 130 | position:absolute; 131 | top:5px; 132 | right:24px; 133 | z-index:0; 134 | } 135 | 136 | #nav-sync img { 137 | opacity:0.3; 138 | } 139 | 140 | #nav-sync img:hover { 141 | opacity:0.9; 142 | } 143 | 144 | @media print 145 | { 146 | #nav-tree { display: none; } 147 | div.ui-resizable-handle { display: none; position: relative; } 148 | } 149 | 150 | -------------------------------------------------------------------------------- /docs/navtreedata.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | var NAVTREE = 26 | [ 27 | [ "mi-malloc", "index.html", [ 28 | [ "Building", "build.html", null ], 29 | [ "Using the library", "using.html", null ], 30 | [ "Environment Options", "environment.html", null ], 31 | [ "Overriding Malloc", "overrides.html", null ], 32 | [ "Performance", "bench.html", null ], 33 | [ "Topics", "topics.html", "topics" ], 34 | [ "Data Structures", "annotated.html", [ 35 | [ "Data Structures", "annotated.html", "annotated_dup" ], 36 | [ "Data Structure Index", "classes.html", null ], 37 | [ "Data Fields", "functions.html", [ 38 | [ "All", "functions.html", null ], 39 | [ "Variables", "functions_vars.html", null ] 40 | ] ] 41 | ] ] 42 | ] ] 43 | ]; 44 | 45 | var NAVTREEINDEX = 46 | [ 47 | "annotated.html" 48 | ]; 49 | 50 | var SYNCONMSG = 'click to disable panel synchronization'; 51 | var SYNCOFFMSG = 'click to enable panel synchronization'; -------------------------------------------------------------------------------- /docs/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/open.png -------------------------------------------------------------------------------- /docs/search/all_0.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="all_0.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_5fmi_5foption_5flast_0',['_mi_option_last',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca5b4357b74be0d87568036c32eb1a2e4a',1,'mimalloc-doc.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_1.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="all_1.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/all_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['aligned_20allocation_0',['Aligned Allocation',['../group__aligned.html',1,'']]], 4 | ['allocation_1',['Allocation',['../group__aligned.html',1,'Aligned Allocation'],['../group__malloc.html',1,'Basic Allocation'],['../group__heap.html',1,'Heap Allocation']]], 5 | ['allocation_2',['Zero initialized re-allocation',['../group__zeroinit.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/search/all_10.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['zero_20initialized_20re_20allocation_0',['Zero initialized re-allocation',['../group__zeroinit.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_2.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="all_2.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/all_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['basic_20allocation_0',['Basic Allocation',['../group__malloc.html',1,'']]], 4 | ['block_5fsize_1',['block_size',['../group__analysis.html#a332a6c14d736a99699d5453a1cb04b41',1,'mi_heap_area_t']]], 5 | ['blocks_2',['blocks',['../group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8',1,'mi_heap_area_t']]], 6 | ['building_3',['Building',['../build.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/search/all_3.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="all_3.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/all_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['c_20wrappers_0',['C++ wrappers',['../group__cpp.html',1,'']]], 4 | ['committed_1',['committed',['../group__analysis.html#ab47526df656d8837ec3e97f11b83f835',1,'mi_heap_area_t']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/all_4.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="all_4.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/all_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['environment_20options_0',['Environment Options',['../environment.html',1,'']]], 4 | ['extended_20functions_1',['Extended Functions',['../group__extended.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/all_5.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="all_5.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/all_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['full_5fblock_5fsize_0',['full_block_size',['../group__analysis.html#ab53664e31d7fe2564f8d42041ef75cb3',1,'mi_heap_area_t']]], 4 | ['functions_1',['Extended Functions',['../group__extended.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/all_6.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="all_6.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/all_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['heap_20allocation_0',['Heap Allocation',['../group__heap.html',1,'']]], 4 | ['heap_20introspection_1',['Heap Introspection',['../group__analysis.html',1,'']]], 5 | ['heap_5ftag_2',['heap_tag',['../group__analysis.html#a2b7a0c92ece8daf46b558efc990ebdc1',1,'mi_heap_area_t']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/search/all_7.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="all_7.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/all_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['initialized_20re_20allocation_0',['Zero initialized re-allocation',['../group__zeroinit.html',1,'']]], 4 | ['introspection_1',['Heap Introspection',['../group__analysis.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/all_8.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="all_8.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/all_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['library_0',['Using the library',['../using.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_9.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="all_9.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/all_a.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="all_a.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/all_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['options_0',['Options',['../environment.html',1,'Environment Options'],['../group__options.html',1,'Runtime Options']]], 4 | ['overriding_20malloc_1',['Overriding Malloc',['../overrides.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/all_b.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="all_b.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/all_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['performance_0',['Performance',['../bench.html',1,'']]], 4 | ['posix_1',['Posix',['../group__posix.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/all_c.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="all_c.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/all_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['re_20allocation_0',['Zero initialized re-allocation',['../group__zeroinit.html',1,'']]], 4 | ['reserved_1',['reserved',['../group__analysis.html#ae848a3e6840414891035423948ca0383',1,'mi_heap_area_t']]], 5 | ['runtime_20options_2',['Runtime Options',['../group__options.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/search/all_d.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html><head><title></title> 3 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 4 | <meta name="generator" content="Doxygen 1.8.15"/> 5 | <link rel="stylesheet" type="text/css" href="search.css"/> 6 | <script type="text/javascript" src="all_d.js"></script> 7 | <script type="text/javascript" src="search.js"></script> 8 | </head> 9 | <body class="SRPage"> 10 | <div id="SRIndex"> 11 | <div class="SRStatus" id="Loading">Loading...</div> 12 | <div id="SRResults"></div> 13 | <script type="text/javascript"><!-- 14 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 15 | createResults(); 16 | /* @license-end */ 17 | --></script> 18 | <div class="SRStatus" id="Searching">Searching...</div> 19 | <div class="SRStatus" id="NoMatches">No Matches</div> 20 | <script type="text/javascript"><!-- 21 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 22 | document.getElementById("Loading").style.display="none"; 23 | document.getElementById("NoMatches").style.display="none"; 24 | var searchResults = new SearchResults("searchResults"); 25 | searchResults.Search(); 26 | /* @license-end */ 27 | --></script> 28 | </div> 29 | </body> 30 | </html> 31 | -------------------------------------------------------------------------------- /docs/search/all_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['the_20library_0',['Using the library',['../using.html',1,'']]], 4 | ['typed_20macros_1',['Typed Macros',['../group__typed.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/all_e.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['used_0',['used',['../group__analysis.html#ab820302c5cd0df133eb8e51650a008b4',1,'mi_heap_area_t']]], 4 | ['using_20the_20library_1',['Using the library',['../using.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/all_f.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['wrappers_0',['C++ wrappers',['../group__cpp.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/classes_0.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="classes_0.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/classes_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mi_5fheap_5farea_5ft_0',['mi_heap_area_t',['../group__analysis.html#structmi__heap__area__t',1,'']]], 4 | ['mi_5fstl_5fallocator_1',['mi_stl_allocator',['../group__cpp.html#structmi__stl__allocator',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/search/close.png -------------------------------------------------------------------------------- /docs/search/close.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 3 | "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 4 | <svg 5 | xmlns="http://www.w3.org/2000/svg" 6 | xmlns:xlink="http://www.w3.org/1999/xlink" 7 | viewBox="0 0 11 11" 8 | height="11" 9 | width="11" 10 | id="svg2" 11 | version="1.1"> 12 | <defs 13 | id="defs6" /> 14 | <path 15 | id="path12" 16 | d="M 5.5 0.5 A 5 5 0 0 0 0.5 5.5 A 5 5 0 0 0 5.5 10.5 A 5 5 0 0 0 10.5 5.5 A 5 5 0 0 0 5.5 0.5 z M 3.5820312 3 A 0.58291923 0.58291923 0 0 1 4 3.1757812 L 5.5 4.6757812 L 7 3.1757812 A 0.58291923 0.58291923 0 0 1 7.4003906 3 A 0.58291923 0.58291923 0 0 1 7.8242188 4 L 6.3242188 5.5 L 7.8242188 7 A 0.58291923 0.58291923 0 1 1 7 7.8242188 L 5.5 6.3242188 L 4 7.8242188 A 0.58291923 0.58291923 0 1 1 3.1757812 7 L 4.6757812 5.5 L 3.1757812 4 A 0.58291923 0.58291923 0 0 1 3.5820312 3 z " 17 | style="stroke-width:1.09870648;fill:#bababa;fill-opacity:1" /> 18 | </svg> 19 | -------------------------------------------------------------------------------- /docs/search/enums_0.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="enums_0.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/enums_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mi_5foption_5ft_0',['mi_option_t',['../group__options.html#gafebf7ed116adb38ae5218bc3ce06884c',1,'mimalloc-doc.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/enumvalues_0.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="enumvalues_0.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/enumvalues_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_5fmi_5foption_5flast_0',['_mi_option_last',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca5b4357b74be0d87568036c32eb1a2e4a',1,'mimalloc-doc.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/enumvalues_1.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="enumvalues_1.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/enumvalues_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mi_5foption_5fabandoned_5fpage_5fpurge_0',['mi_option_abandoned_page_purge',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca11e62ed69200a489a5be955582078c0c',1,'mimalloc-doc.h']]], 4 | ['mi_5foption_5fabandoned_5freclaim_5fon_5ffree_1',['mi_option_abandoned_reclaim_on_free',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca009e4b5684922ce664d73d2a8e1698d9',1,'mimalloc-doc.h']]], 5 | ['mi_5foption_5fallow_5flarge_5fos_5fpages_2',['mi_option_allow_large_os_pages',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7cc4804ced69004fa42a9a136a9ba556',1,'mimalloc-doc.h']]], 6 | ['mi_5foption_5farena_5feager_5fcommit_3',['mi_option_arena_eager_commit',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafd0c5ddbc4b59fd8b5216871728167a5',1,'mimalloc-doc.h']]], 7 | ['mi_5foption_5farena_5fpurge_5fmult_4',['mi_option_arena_purge_mult',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca8236501f1ab45d26e6fd885d191a2b5e',1,'mimalloc-doc.h']]], 8 | ['mi_5foption_5farena_5freserve_5',['mi_option_arena_reserve',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cab1c88e23ae290bbeec824038a97959de',1,'mimalloc-doc.h']]], 9 | ['mi_5foption_5fdestroy_5fon_5fexit_6',['mi_option_destroy_on_exit',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca6364331e305e7d3c0218b058ff3afc88',1,'mimalloc-doc.h']]], 10 | ['mi_5foption_5fdisallow_5farena_5falloc_7',['mi_option_disallow_arena_alloc',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caeae1696100e4057ffc4182730cc04e40',1,'mimalloc-doc.h']]], 11 | ['mi_5foption_5fdisallow_5fos_5falloc_8',['mi_option_disallow_os_alloc',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cadcfb5a09580361b1be65901d2d812de6',1,'mimalloc-doc.h']]], 12 | ['mi_5foption_5feager_5fcommit_9',['mi_option_eager_commit',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca1e8de72c93da7ff22d91e1e27b52ac2b',1,'mimalloc-doc.h']]], 13 | ['mi_5foption_5feager_5fcommit_5fdelay_10',['mi_option_eager_commit_delay',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca17a190c25be381142d87e0468c4c068c',1,'mimalloc-doc.h']]], 14 | ['mi_5foption_5flimit_5fos_5falloc_11',['mi_option_limit_os_alloc',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca9fa61bd9668479f8452d2195759444cc',1,'mimalloc-doc.h']]], 15 | ['mi_5foption_5fmax_5ferrors_12',['mi_option_max_errors',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caec6ecbe29d46a48205ed8823a8a52a6a',1,'mimalloc-doc.h']]], 16 | ['mi_5foption_5fmax_5fsegment_5freclaim_13',['mi_option_max_segment_reclaim',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa9ad9005d7017c8c30ad2d6ba31db909',1,'mimalloc-doc.h']]], 17 | ['mi_5foption_5fmax_5fwarnings_14',['mi_option_max_warnings',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caf9595921087e942602ee079158762665',1,'mimalloc-doc.h']]], 18 | ['mi_5foption_5fos_5ftag_15',['mi_option_os_tag',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4b74ae2a69e445de6c2361b73c1d14bf',1,'mimalloc-doc.h']]], 19 | ['mi_5foption_5fpurge_5fdecommits_16',['mi_option_purge_decommits',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca9d15c5e3d2115eef681c17e4dd5ab9a4',1,'mimalloc-doc.h']]], 20 | ['mi_5foption_5fpurge_5fdelay_17',['mi_option_purge_delay',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cadd351e615acd8563529c20a347be7290',1,'mimalloc-doc.h']]], 21 | ['mi_5foption_5fpurge_5fextend_5fdelay_18',['mi_option_purge_extend_delay',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca02005f164bdf03f5f00c5be726adf487',1,'mimalloc-doc.h']]], 22 | ['mi_5foption_5freserve_5fhuge_5fos_5fpages_19',['mi_option_reserve_huge_os_pages',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caca7ed041be3b0b9d0b82432c7bf41af2',1,'mimalloc-doc.h']]], 23 | ['mi_5foption_5freserve_5fhuge_5fos_5fpages_5fat_20',['mi_option_reserve_huge_os_pages_at',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa13e7926d4339d2aa6fbf61d4473fd5c',1,'mimalloc-doc.h']]], 24 | ['mi_5foption_5freserve_5fos_5fmemory_21',['mi_option_reserve_os_memory',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4999c828cf79a0fb2de65d23f7333',1,'mimalloc-doc.h']]], 25 | ['mi_5foption_5fretry_5fon_5foom_22',['mi_option_retry_on_oom',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca8f51df355bf6651db899e6085b54865e',1,'mimalloc-doc.h']]], 26 | ['mi_5foption_5fshow_5ferrors_23',['mi_option_show_errors',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4822e5c00732c5984b32a032837f0',1,'mimalloc-doc.h']]], 27 | ['mi_5foption_5fshow_5fstats_24',['mi_option_show_stats',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0957ef73b2550764b4840edf48422fda',1,'mimalloc-doc.h']]], 28 | ['mi_5foption_5fuse_5fnuma_5fnodes_25',['mi_option_use_numa_nodes',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0ac33a18f6b659fcfaf44efb0bab1b74',1,'mimalloc-doc.h']]], 29 | ['mi_5foption_5fverbose_26',['mi_option_verbose',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7c8b7bf5281c581bad64f5daa6442777',1,'mimalloc-doc.h']]], 30 | ['mi_5foption_5fvisit_5fabandoned_27',['mi_option_visit_abandoned',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca38c67733a3956a1f4eeaca89fab9e78e',1,'mimalloc-doc.h']]] 31 | ]; 32 | -------------------------------------------------------------------------------- /docs/search/functions_0.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="functions_0.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/functions_1.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html><head><title></title> 3 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 4 | <meta name="generator" content="Doxygen 1.8.15"/> 5 | <link rel="stylesheet" type="text/css" href="search.css"/> 6 | <script type="text/javascript" src="functions_1.js"></script> 7 | <script type="text/javascript" src="search.js"></script> 8 | </head> 9 | <body class="SRPage"> 10 | <div id="SRIndex"> 11 | <div class="SRStatus" id="Loading">Loading...</div> 12 | <div id="SRResults"></div> 13 | <script type="text/javascript"><!-- 14 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 15 | createResults(); 16 | /* @license-end */ 17 | --></script> 18 | <div class="SRStatus" id="Searching">Searching...</div> 19 | <div class="SRStatus" id="NoMatches">No Matches</div> 20 | <script type="text/javascript"><!-- 21 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 22 | document.getElementById("Loading").style.display="none"; 23 | document.getElementById("NoMatches").style.display="none"; 24 | var searchResults = new SearchResults("searchResults"); 25 | searchResults.Search(); 26 | /* @license-end */ 27 | --></script> 28 | </div> 29 | </body> 30 | </html> 31 | -------------------------------------------------------------------------------- /docs/search/functions_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['void',['void',['../group__extended.html#gadc49452cc1634aa03ac83ffe9b97a19c',1,'mimalloc-doc.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/groups_0.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="groups_0.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/groups_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['aligned_20allocation_0',['Aligned Allocation',['../group__aligned.html',1,'']]], 4 | ['allocation_1',['Allocation',['../group__aligned.html',1,'Aligned Allocation'],['../group__malloc.html',1,'Basic Allocation'],['../group__heap.html',1,'Heap Allocation']]], 5 | ['allocation_2',['Zero initialized re-allocation',['../group__zeroinit.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/search/groups_1.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="groups_1.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/groups_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['basic_20allocation_0',['Basic Allocation',['../group__malloc.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/groups_2.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="groups_2.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/groups_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['c_20wrappers_0',['C++ wrappers',['../group__cpp.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/groups_3.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="groups_3.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/groups_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['extended_20functions_0',['Extended Functions',['../group__extended.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/groups_4.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="groups_4.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/groups_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['functions_0',['Extended Functions',['../group__extended.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/groups_5.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="groups_5.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/groups_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['heap_20allocation_0',['Heap Allocation',['../group__heap.html',1,'']]], 4 | ['heap_20introspection_1',['Heap Introspection',['../group__analysis.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/groups_6.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="groups_6.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/groups_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['initialized_20re_20allocation_0',['Zero initialized re-allocation',['../group__zeroinit.html',1,'']]], 4 | ['introspection_1',['Heap Introspection',['../group__analysis.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/groups_7.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="groups_7.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/groups_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['macros_0',['Typed Macros',['../group__typed.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/groups_8.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="groups_8.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/groups_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['options_0',['Runtime Options',['../group__options.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/groups_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['posix_0',['Posix',['../group__posix.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/groups_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['re_20allocation_0',['Zero initialized re-allocation',['../group__zeroinit.html',1,'']]], 4 | ['runtime_20options_1',['Runtime Options',['../group__options.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/groups_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['typed_20macros_0',['Typed Macros',['../group__typed.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/groups_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['wrappers_0',['C++ wrappers',['../group__cpp.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/groups_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['zero_20initialized_20re_20allocation_0',['Zero initialized re-allocation',['../group__zeroinit.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/mag_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/search/mag_sel.png -------------------------------------------------------------------------------- /docs/search/nomatches.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <link rel="stylesheet" type="text/css" href="search.css"/> 6 | <script type="text/javascript" src="search.js"></script> 7 | </head> 8 | <body class="SRPage"> 9 | <div id="SRIndex"> 10 | <div class="SRStatus" id="NoMatches">No Matches</div> 11 | </div> 12 | </body> 13 | </html> 14 | -------------------------------------------------------------------------------- /docs/search/pages_0.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="pages_0.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/pages_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['building_0',['Building',['../build.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/pages_1.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="pages_1.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/pages_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['environment_20options_0',['Environment Options',['../environment.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/pages_2.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="pages_2.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/pages_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['library_0',['Using the library',['../using.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/pages_3.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="pages_3.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/pages_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['malloc_0',['Overriding Malloc',['../overrides.html',1,'']]], 4 | ['malloc_1',['mi-malloc',['../index.html',1,'']]], 5 | ['mi_20malloc_2',['mi-malloc',['../index.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/search/pages_4.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="pages_4.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/pages_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['options_0',['Environment Options',['../environment.html',1,'']]], 4 | ['overriding_20malloc_1',['Overriding Malloc',['../overrides.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/pages_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['performance_0',['Performance',['../bench.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/pages_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['the_20library_0',['Using the library',['../using.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/pages_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['using_20the_20library_0',['Using the library',['../using.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/search_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/search/search_l.png -------------------------------------------------------------------------------- /docs/search/search_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/search/search_m.png -------------------------------------------------------------------------------- /docs/search/search_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/search/search_r.png -------------------------------------------------------------------------------- /docs/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "_abcefhilmoprtuwz", 4 | 1: "m", 5 | 2: "m", 6 | 3: "bcfhru", 7 | 4: "m", 8 | 5: "m", 9 | 6: "_m", 10 | 7: "abcefhimoprtwz", 11 | 8: "belmoptu" 12 | }; 13 | 14 | var indexSectionNames = 15 | { 16 | 0: "all", 17 | 1: "classes", 18 | 2: "functions", 19 | 3: "variables", 20 | 4: "typedefs", 21 | 5: "enums", 22 | 6: "enumvalues", 23 | 7: "groups", 24 | 8: "pages" 25 | }; 26 | 27 | var indexSectionLabels = 28 | { 29 | 0: "All", 30 | 1: "Data Structures", 31 | 2: "Functions", 32 | 3: "Variables", 33 | 4: "Typedefs", 34 | 5: "Enumerations", 35 | 6: "Enumerator", 36 | 7: "Modules", 37 | 8: "Pages" 38 | }; 39 | 40 | -------------------------------------------------------------------------------- /docs/search/typedefs_0.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="typedefs_0.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/typedefs_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mi_5farena_5fid_5ft_0',['mi_arena_id_t',['../group__extended.html#ga99fe38650d0b02e0e0f89ee024db91d3',1,'mimalloc-doc.h']]], 4 | ['mi_5fblock_5fvisit_5ffun_1',['mi_block_visit_fun',['../group__analysis.html#ga8255dc9371e6b299d9802a610c4e34ec',1,'mimalloc-doc.h']]], 5 | ['mi_5fdeferred_5ffree_5ffun_2',['mi_deferred_free_fun',['../group__extended.html#ga292a45f7dbc7cd23c5352ce1f0002816',1,'mimalloc-doc.h']]], 6 | ['mi_5ferror_5ffun_3',['mi_error_fun',['../group__extended.html#ga83fc6a688b322261e1c2deab000b0591',1,'mimalloc-doc.h']]], 7 | ['mi_5fheap_5ft_4',['mi_heap_t',['../group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2',1,'mimalloc-doc.h']]], 8 | ['mi_5foutput_5ffun_5',['mi_output_fun',['../group__extended.html#gadf31cea7d0332a81c8b882cbbdbadb8d',1,'mimalloc-doc.h']]], 9 | ['mi_5fsubproc_5fid_5ft_6',['mi_subproc_id_t',['../group__extended.html#ga8c0bcd1fee27c7641e9c3c0d991b3b7d',1,'mimalloc-doc.h']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /docs/search/typedefs_1.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html><head><title></title> 3 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 4 | <meta name="generator" content="Doxygen 1.8.15"/> 5 | <link rel="stylesheet" type="text/css" href="search.css"/> 6 | <script type="text/javascript" src="typedefs_1.js"></script> 7 | <script type="text/javascript" src="search.js"></script> 8 | </head> 9 | <body class="SRPage"> 10 | <div id="SRIndex"> 11 | <div class="SRStatus" id="Loading">Loading...</div> 12 | <div id="SRResults"></div> 13 | <script type="text/javascript"><!-- 14 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 15 | createResults(); 16 | /* @license-end */ 17 | --></script> 18 | <div class="SRStatus" id="Searching">Searching...</div> 19 | <div class="SRStatus" id="NoMatches">No Matches</div> 20 | <script type="text/javascript"><!-- 21 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 22 | document.getElementById("Loading").style.display="none"; 23 | document.getElementById("NoMatches").style.display="none"; 24 | var searchResults = new SearchResults("searchResults"); 25 | searchResults.Search(); 26 | /* @license-end */ 27 | --></script> 28 | </div> 29 | </body> 30 | </html> 31 | -------------------------------------------------------------------------------- /docs/search/typedefs_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['heartbeat',['heartbeat',['../group__extended.html#ga411f6e94394a2400aa460c796beff8d8',1,'mimalloc-doc.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/typedefs_2.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html><head><title></title> 3 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 4 | <meta name="generator" content="Doxygen 1.8.15"/> 5 | <link rel="stylesheet" type="text/css" href="search.css"/> 6 | <script type="text/javascript" src="typedefs_2.js"></script> 7 | <script type="text/javascript" src="search.js"></script> 8 | </head> 9 | <body class="SRPage"> 10 | <div id="SRIndex"> 11 | <div class="SRStatus" id="Loading">Loading...</div> 12 | <div id="SRResults"></div> 13 | <script type="text/javascript"><!-- 14 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 15 | createResults(); 16 | /* @license-end */ 17 | --></script> 18 | <div class="SRStatus" id="Searching">Searching...</div> 19 | <div class="SRStatus" id="NoMatches">No Matches</div> 20 | <script type="text/javascript"><!-- 21 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 22 | document.getElementById("Loading").style.display="none"; 23 | document.getElementById("NoMatches").style.display="none"; 24 | var searchResults = new SearchResults("searchResults"); 25 | searchResults.Search(); 26 | /* @license-end */ 27 | --></script> 28 | </div> 29 | </body> 30 | </html> 31 | -------------------------------------------------------------------------------- /docs/search/typedefs_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mi_5fblock_5fvisit_5ffun',['mi_block_visit_fun',['../group__analysis.html#gadfa01e2900f0e5d515ad5506b26f6d65',1,'mimalloc-doc.h']]], 4 | ['mi_5fheap_5ft',['mi_heap_t',['../group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2',1,'mimalloc-doc.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/variables_0.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="variables_0.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/variables_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['block_5fsize_0',['block_size',['../group__analysis.html#a332a6c14d736a99699d5453a1cb04b41',1,'mi_heap_area_t']]], 4 | ['blocks_1',['blocks',['../group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8',1,'mi_heap_area_t']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/variables_1.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="variables_1.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/variables_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['committed_0',['committed',['../group__analysis.html#ab47526df656d8837ec3e97f11b83f835',1,'mi_heap_area_t']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/variables_2.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="variables_2.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/variables_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['full_5fblock_5fsize_0',['full_block_size',['../group__analysis.html#ab53664e31d7fe2564f8d42041ef75cb3',1,'mi_heap_area_t']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/variables_3.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head><title></title> 4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> 5 | <meta name="generator" content="Doxygen 1.9.1"/> 6 | <link rel="stylesheet" type="text/css" href="search.css"/> 7 | <script type="text/javascript" src="variables_3.js"></script> 8 | <script type="text/javascript" src="search.js"></script> 9 | </head> 10 | <body class="SRPage"> 11 | <div id="SRIndex"> 12 | <div class="SRStatus" id="Loading">Loading...</div> 13 | <div id="SRResults"></div> 14 | <script type="text/javascript"> 15 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 16 | createResults(); 17 | /* @license-end */ 18 | </script> 19 | <div class="SRStatus" id="Searching">Searching...</div> 20 | <div class="SRStatus" id="NoMatches">No Matches</div> 21 | <script type="text/javascript"> 22 | /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ 23 | document.getElementById("Loading").style.display="none"; 24 | document.getElementById("NoMatches").style.display="none"; 25 | var searchResults = new SearchResults("searchResults"); 26 | searchResults.Search(); 27 | window.addEventListener("message", function(event) { 28 | if (event.data == "take_focus") { 29 | var elem = searchResults.NavNext(0); 30 | if (elem) elem.focus(); 31 | } 32 | }); 33 | /* @license-end */ 34 | </script> 35 | </div> 36 | </body> 37 | </html> 38 | -------------------------------------------------------------------------------- /docs/search/variables_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['heap_5ftag_0',['heap_tag',['../group__analysis.html#a2b7a0c92ece8daf46b558efc990ebdc1',1,'mi_heap_area_t']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/variables_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['reserved_0',['reserved',['../group__analysis.html#ae848a3e6840414891035423948ca0383',1,'mi_heap_area_t']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/splitbar.png -------------------------------------------------------------------------------- /docs/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/sync_off.png -------------------------------------------------------------------------------- /docs/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/sync_on.png -------------------------------------------------------------------------------- /docs/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/tab_a.png -------------------------------------------------------------------------------- /docs/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/tab_b.png -------------------------------------------------------------------------------- /docs/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/tab_h.png -------------------------------------------------------------------------------- /docs/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/docs/tab_s.png -------------------------------------------------------------------------------- /docs/tabs.css: -------------------------------------------------------------------------------- 1 | .tabs, .tabs2, .tabs3 { 2 | background-image: url('tab_b.png'); 3 | width: 100%; 4 | z-index: 101; 5 | font-size: 13px; 6 | font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; 7 | display: table; 8 | } 9 | 10 | .tabs2 { 11 | font-size: 10px; 12 | } 13 | .tabs3 { 14 | font-size: 9px; 15 | } 16 | 17 | .tablist { 18 | margin: 0; 19 | padding: 0; 20 | display: block; 21 | } 22 | 23 | .tablist li { 24 | float: left; 25 | display: table-cell; 26 | background-image: url('tab_b.png'); 27 | line-height: 36px; 28 | list-style: none; 29 | } 30 | 31 | .tablist a { 32 | display: block; 33 | padding: 0 20px; 34 | font-weight: bold; 35 | background-image:url('tab_s.png'); 36 | background-repeat:no-repeat; 37 | background-position:right; 38 | color: #040404; 39 | text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); 40 | text-decoration: none; 41 | outline: none; 42 | } 43 | 44 | .tablist a:focus { 45 | outline: auto; 46 | z-index: 10; 47 | position: relative; 48 | } 49 | 50 | .tabs3 .tablist a { 51 | padding: 0 10px; 52 | } 53 | 54 | .tablist a:hover { 55 | background-image: url('tab_h.png'); 56 | background-repeat:repeat-x; 57 | color: white; 58 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); 59 | text-decoration: none; 60 | } 61 | 62 | .tablist li.current a { 63 | background-image: url('tab_a.png'); 64 | background-repeat:repeat-x; 65 | color: white; 66 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); 67 | } 68 | 69 | -------------------------------------------------------------------------------- /docs/topics.js: -------------------------------------------------------------------------------- 1 | var topics = 2 | [ 3 | [ "Basic Allocation", "group__malloc.html", "group__malloc" ], 4 | [ "Extended Functions", "group__extended.html", "group__extended" ], 5 | [ "Aligned Allocation", "group__aligned.html", "group__aligned" ], 6 | [ "Heap Allocation", "group__heap.html", "group__heap" ], 7 | [ "Zero initialized re-allocation", "group__zeroinit.html", "group__zeroinit" ], 8 | [ "Typed Macros", "group__typed.html", "group__typed" ], 9 | [ "Heap Introspection", "group__analysis.html", "group__analysis" ], 10 | [ "Runtime Options", "group__options.html", "group__options" ], 11 | [ "Posix", "group__posix.html", "group__posix" ], 12 | [ "C++ wrappers", "group__cpp.html", "group__cpp" ] 13 | ]; -------------------------------------------------------------------------------- /ide/vs2022/mimalloc-lib.vcxproj.filters: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 3 | <ItemGroup> 4 | <ClCompile Include="..\..\src\alloc.c"> 5 | <Filter>Sources</Filter> 6 | </ClCompile> 7 | <ClCompile Include="..\..\src\alloc-aligned.c"> 8 | <Filter>Sources</Filter> 9 | </ClCompile> 10 | <ClCompile Include="..\..\src\alloc-override.c"> 11 | <Filter>Sources</Filter> 12 | </ClCompile> 13 | <ClCompile Include="..\..\src\alloc-posix.c"> 14 | <Filter>Sources</Filter> 15 | </ClCompile> 16 | <ClCompile Include="..\..\src\arena.c"> 17 | <Filter>Sources</Filter> 18 | </ClCompile> 19 | <ClCompile Include="..\..\src\bitmap.c"> 20 | <Filter>Sources</Filter> 21 | </ClCompile> 22 | <ClCompile Include="..\..\src\free.c"> 23 | <Filter>Sources</Filter> 24 | </ClCompile> 25 | <ClCompile Include="..\..\src\heap.c"> 26 | <Filter>Sources</Filter> 27 | </ClCompile> 28 | <ClCompile Include="..\..\src\init.c"> 29 | <Filter>Sources</Filter> 30 | </ClCompile> 31 | <ClCompile Include="..\..\src\libc.c"> 32 | <Filter>Sources</Filter> 33 | </ClCompile> 34 | <ClCompile Include="..\..\src\options.c"> 35 | <Filter>Sources</Filter> 36 | </ClCompile> 37 | <ClCompile Include="..\..\src\os.c"> 38 | <Filter>Sources</Filter> 39 | </ClCompile> 40 | <ClCompile Include="..\..\src\page.c"> 41 | <Filter>Sources</Filter> 42 | </ClCompile> 43 | <ClCompile Include="..\..\src\page-queue.c"> 44 | <Filter>Sources</Filter> 45 | </ClCompile> 46 | <ClCompile Include="..\..\src\prim\windows\prim.c"> 47 | <Filter>Sources</Filter> 48 | </ClCompile> 49 | <ClCompile Include="..\..\src\prim\prim.c"> 50 | <Filter>Sources</Filter> 51 | </ClCompile> 52 | <ClCompile Include="..\..\src\random.c"> 53 | <Filter>Sources</Filter> 54 | </ClCompile> 55 | <ClCompile Include="..\..\src\segment.c"> 56 | <Filter>Sources</Filter> 57 | </ClCompile> 58 | <ClCompile Include="..\..\src\segment-map.c"> 59 | <Filter>Sources</Filter> 60 | </ClCompile> 61 | <ClCompile Include="..\..\src\stats.c"> 62 | <Filter>Sources</Filter> 63 | </ClCompile> 64 | <ClCompile Include="..\..\src\arena-abandon.c"> 65 | <Filter>Sources</Filter> 66 | </ClCompile> 67 | </ItemGroup> 68 | <ItemGroup> 69 | <ClInclude Include="..\..\include\mimalloc\atomic.h"> 70 | <Filter>Headers</Filter> 71 | </ClInclude> 72 | <ClInclude Include="..\..\src\bitmap.h"> 73 | <Filter>Headers</Filter> 74 | </ClInclude> 75 | <ClInclude Include="..\..\include\mimalloc\internal.h"> 76 | <Filter>Headers</Filter> 77 | </ClInclude> 78 | <ClInclude Include="$(ProjectDir)..\..\include\mimalloc.h"> 79 | <Filter>Headers</Filter> 80 | </ClInclude> 81 | <ClInclude Include="..\..\include\mimalloc-new-delete.h"> 82 | <Filter>Headers</Filter> 83 | </ClInclude> 84 | <ClInclude Include="$(ProjectDir)..\..\include\mimalloc-override.h"> 85 | <Filter>Headers</Filter> 86 | </ClInclude> 87 | <ClInclude Include="..\..\include\mimalloc\track.h"> 88 | <Filter>Headers</Filter> 89 | </ClInclude> 90 | <ClInclude Include="..\..\include\mimalloc\types.h"> 91 | <Filter>Headers</Filter> 92 | </ClInclude> 93 | <ClInclude Include="..\..\include\mimalloc\prim.h"> 94 | <Filter>Headers</Filter> 95 | </ClInclude> 96 | <ClInclude Include="..\..\include\mimalloc-stats.h"> 97 | <Filter>Headers</Filter> 98 | </ClInclude> 99 | </ItemGroup> 100 | <ItemGroup> 101 | <Filter Include="Headers"> 102 | <UniqueIdentifier>{1430490c-e711-4ace-a1b8-36f4d5105873}</UniqueIdentifier> 103 | </Filter> 104 | <Filter Include="Sources"> 105 | <UniqueIdentifier>{461c78ef-04b0-44d1-a0ca-7d488abaa592}</UniqueIdentifier> 106 | </Filter> 107 | </ItemGroup> 108 | </Project> -------------------------------------------------------------------------------- /ide/vs2022/mimalloc-override-dll.vcxproj.filters: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 3 | <ItemGroup> 4 | <ClCompile Include="..\..\src\alloc.c"> 5 | <Filter>Sources</Filter> 6 | </ClCompile> 7 | <ClCompile Include="..\..\src\alloc-aligned.c"> 8 | <Filter>Sources</Filter> 9 | </ClCompile> 10 | <ClCompile Include="..\..\src\alloc-override.c"> 11 | <Filter>Sources</Filter> 12 | </ClCompile> 13 | <ClCompile Include="..\..\src\alloc-posix.c"> 14 | <Filter>Sources</Filter> 15 | </ClCompile> 16 | <ClCompile Include="..\..\src\arena.c"> 17 | <Filter>Sources</Filter> 18 | </ClCompile> 19 | <ClCompile Include="..\..\src\bitmap.c"> 20 | <Filter>Sources</Filter> 21 | </ClCompile> 22 | <ClCompile Include="..\..\src\heap.c"> 23 | <Filter>Sources</Filter> 24 | </ClCompile> 25 | <ClCompile Include="..\..\src\init.c"> 26 | <Filter>Sources</Filter> 27 | </ClCompile> 28 | <ClCompile Include="..\..\src\libc.c"> 29 | <Filter>Sources</Filter> 30 | </ClCompile> 31 | <ClCompile Include="..\..\src\options.c"> 32 | <Filter>Sources</Filter> 33 | </ClCompile> 34 | <ClCompile Include="..\..\src\os.c"> 35 | <Filter>Sources</Filter> 36 | </ClCompile> 37 | <ClCompile Include="..\..\src\page.c"> 38 | <Filter>Sources</Filter> 39 | </ClCompile> 40 | <ClCompile Include="..\..\src\page-queue.c"> 41 | <Filter>Sources</Filter> 42 | </ClCompile> 43 | <ClCompile Include="..\..\src\prim\windows\prim.c"> 44 | <Filter>Sources</Filter> 45 | </ClCompile> 46 | <ClCompile Include="..\..\src\prim\prim.c"> 47 | <Filter>Sources</Filter> 48 | </ClCompile> 49 | <ClCompile Include="..\..\src\random.c"> 50 | <Filter>Sources</Filter> 51 | </ClCompile> 52 | <ClCompile Include="..\..\src\segment.c"> 53 | <Filter>Sources</Filter> 54 | </ClCompile> 55 | <ClCompile Include="..\..\src\segment-map.c"> 56 | <Filter>Sources</Filter> 57 | </ClCompile> 58 | <ClCompile Include="..\..\src\stats.c"> 59 | <Filter>Sources</Filter> 60 | </ClCompile> 61 | <ClCompile Include="..\..\src\arena-abandon.c"> 62 | <Filter>Sources</Filter> 63 | </ClCompile> 64 | </ItemGroup> 65 | <ItemGroup> 66 | <ClInclude Include="..\..\include\mimalloc\atomic.h"> 67 | <Filter>Headers</Filter> 68 | </ClInclude> 69 | <ClInclude Include="..\..\src\bitmap.h"> 70 | <Filter>Headers</Filter> 71 | </ClInclude> 72 | <ClInclude Include="..\..\include\mimalloc\internal.h"> 73 | <Filter>Headers</Filter> 74 | </ClInclude> 75 | <ClInclude Include="$(ProjectDir)..\..\include\mimalloc.h"> 76 | <Filter>Headers</Filter> 77 | </ClInclude> 78 | <ClInclude Include="..\..\include\mimalloc-etw.h"> 79 | <Filter>Headers</Filter> 80 | </ClInclude> 81 | <ClInclude Include="..\..\include\mimalloc-etw-gen.h"> 82 | <Filter>Headers</Filter> 83 | </ClInclude> 84 | <ClInclude Include="..\..\include\mimalloc-new-delete.h"> 85 | <Filter>Headers</Filter> 86 | </ClInclude> 87 | <ClInclude Include="..\..\include\mimalloc-override.h"> 88 | <Filter>Headers</Filter> 89 | </ClInclude> 90 | <ClInclude Include="..\..\include\mimalloc\track.h"> 91 | <Filter>Headers</Filter> 92 | </ClInclude> 93 | <ClInclude Include="..\..\include\mimalloc\types.h"> 94 | <Filter>Headers</Filter> 95 | </ClInclude> 96 | <ClInclude Include="..\..\include\mimalloc\prim.h"> 97 | <Filter>Headers</Filter> 98 | </ClInclude> 99 | <ClInclude Include="..\..\include\mimalloc-stats.h"> 100 | <Filter>Headers</Filter> 101 | </ClInclude> 102 | </ItemGroup> 103 | <ItemGroup> 104 | <Filter Include="Headers"> 105 | <UniqueIdentifier>{262c6c21-e270-4ba6-bd63-4ac999307e4e}</UniqueIdentifier> 106 | </Filter> 107 | <Filter Include="Sources"> 108 | <UniqueIdentifier>{94b40bdc-a741-45dd-81aa-c05fabcd2970}</UniqueIdentifier> 109 | </Filter> 110 | </ItemGroup> 111 | </Project> -------------------------------------------------------------------------------- /include/mimalloc-new-delete.h: -------------------------------------------------------------------------------- 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_NEW_DELETE_H 9 | #define MIMALLOC_NEW_DELETE_H 10 | 11 | // ---------------------------------------------------------------------------- 12 | // This header provides convenient overrides for the new and 13 | // delete operations in C++. 14 | // 15 | // This header should be included in only one source file! 16 | // 17 | // On Windows, or when linking dynamically with mimalloc, these 18 | // can be more performant than the standard new-delete operations. 19 | // See <https://en.cppreference.com/w/cpp/memory/new/operator_new> 20 | // --------------------------------------------------------------------------- 21 | #if defined(__cplusplus) 22 | #include <new> 23 | #include <mimalloc.h> 24 | 25 | #if defined(_MSC_VER) && defined(_Ret_notnull_) && defined(_Post_writable_byte_size_) 26 | // stay consistent with VCRT definitions 27 | #define mi_decl_new(n) mi_decl_nodiscard mi_decl_restrict _Ret_notnull_ _Post_writable_byte_size_(n) 28 | #define mi_decl_new_nothrow(n) mi_decl_nodiscard mi_decl_restrict _Ret_maybenull_ _Success_(return != NULL) _Post_writable_byte_size_(n) 29 | #else 30 | #define mi_decl_new(n) mi_decl_nodiscard mi_decl_restrict 31 | #define mi_decl_new_nothrow(n) mi_decl_nodiscard mi_decl_restrict 32 | #endif 33 | 34 | void operator delete(void* p) noexcept { mi_free(p); }; 35 | void operator delete[](void* p) noexcept { mi_free(p); }; 36 | 37 | void operator delete (void* p, const std::nothrow_t&) noexcept { mi_free(p); } 38 | void operator delete[](void* p, const std::nothrow_t&) noexcept { mi_free(p); } 39 | 40 | mi_decl_new(n) void* operator new(std::size_t n) noexcept(false) { return mi_new(n); } 41 | mi_decl_new(n) void* operator new[](std::size_t n) noexcept(false) { return mi_new(n); } 42 | 43 | mi_decl_new_nothrow(n) void* operator new (std::size_t n, const std::nothrow_t& tag) noexcept { (void)(tag); return mi_new_nothrow(n); } 44 | mi_decl_new_nothrow(n) void* operator new[](std::size_t n, const std::nothrow_t& tag) noexcept { (void)(tag); return mi_new_nothrow(n); } 45 | 46 | #if (__cplusplus >= 201402L || _MSC_VER >= 1916) 47 | void operator delete (void* p, std::size_t n) noexcept { mi_free_size(p,n); }; 48 | void operator delete[](void* p, std::size_t n) noexcept { mi_free_size(p,n); }; 49 | #endif 50 | 51 | #if (__cplusplus > 201402L || defined(__cpp_aligned_new)) 52 | void operator delete (void* p, std::align_val_t al) noexcept { mi_free_aligned(p, static_cast<size_t>(al)); } 53 | void operator delete[](void* p, std::align_val_t al) noexcept { mi_free_aligned(p, static_cast<size_t>(al)); } 54 | void operator delete (void* p, std::size_t n, std::align_val_t al) noexcept { mi_free_size_aligned(p, n, static_cast<size_t>(al)); }; 55 | void operator delete[](void* p, std::size_t n, std::align_val_t al) noexcept { mi_free_size_aligned(p, n, static_cast<size_t>(al)); }; 56 | void operator delete (void* p, std::align_val_t al, const std::nothrow_t&) noexcept { mi_free_aligned(p, static_cast<size_t>(al)); } 57 | void operator delete[](void* p, std::align_val_t al, const std::nothrow_t&) noexcept { mi_free_aligned(p, static_cast<size_t>(al)); } 58 | 59 | void* operator new (std::size_t n, std::align_val_t al) noexcept(false) { return mi_new_aligned(n, static_cast<size_t>(al)); } 60 | void* operator new[](std::size_t n, std::align_val_t al) noexcept(false) { return mi_new_aligned(n, static_cast<size_t>(al)); } 61 | void* operator new (std::size_t n, std::align_val_t al, const std::nothrow_t&) noexcept { return mi_new_aligned_nothrow(n, static_cast<size_t>(al)); } 62 | void* operator new[](std::size_t n, std::align_val_t al, const std::nothrow_t&) noexcept { return mi_new_aligned_nothrow(n, static_cast<size_t>(al)); } 63 | #endif 64 | #endif 65 | 66 | #endif // MIMALLOC_NEW_DELETE_H 67 | -------------------------------------------------------------------------------- /include/mimalloc-override.h: -------------------------------------------------------------------------------- 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 malloc_good_size(sz) mi_malloc_good_size(sz) 47 | #define cfree(p) mi_free(p) 48 | 49 | #define valloc(n) mi_valloc(n) 50 | #define pvalloc(n) mi_pvalloc(n) 51 | #define reallocarray(p,s,n) mi_reallocarray(p,s,n) 52 | #define reallocarr(p,s,n) mi_reallocarr(p,s,n) 53 | #define memalign(a,n) mi_memalign(a,n) 54 | #define aligned_alloc(a,n) mi_aligned_alloc(a,n) 55 | #define posix_memalign(p,a,n) mi_posix_memalign(p,a,n) 56 | #define _posix_memalign(p,a,n) mi_posix_memalign(p,a,n) 57 | 58 | // Microsoft aligned variants 59 | #define _aligned_malloc(n,a) mi_malloc_aligned(n,a) 60 | #define _aligned_realloc(p,n,a) mi_realloc_aligned(p,n,a) 61 | #define _aligned_recalloc(p,s,n,a) mi_aligned_recalloc(p,s,n,a) 62 | #define _aligned_msize(p,a,o) mi_usable_size(p) 63 | #define _aligned_free(p) mi_free(p) 64 | #define _aligned_offset_malloc(n,a,o) mi_malloc_aligned_at(n,a,o) 65 | #define _aligned_offset_realloc(p,n,a,o) mi_realloc_aligned_at(p,n,a,o) 66 | #define _aligned_offset_recalloc(p,s,n,a,o) mi_recalloc_aligned_at(p,s,n,a,o) 67 | 68 | #endif // MIMALLOC_OVERRIDE_H 69 | -------------------------------------------------------------------------------- /include/mimalloc-stats.h: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------------- 2 | Copyright (c) 2018-2025, 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_STATS_H 9 | #define MIMALLOC_STATS_H 10 | 11 | #include <mimalloc.h> 12 | #include <stdint.h> 13 | 14 | #define MI_STAT_VERSION 1 // increased on every backward incompatible change 15 | 16 | // count allocation over time 17 | typedef struct mi_stat_count_s { 18 | int64_t total; // total allocated 19 | int64_t peak; // peak allocation 20 | int64_t current; // current allocation 21 | } mi_stat_count_t; 22 | 23 | // counters only increase 24 | typedef struct mi_stat_counter_s { 25 | int64_t total; // total count 26 | } mi_stat_counter_t; 27 | 28 | #define MI_STAT_FIELDS() \ 29 | MI_STAT_COUNT(pages) /* count of mimalloc pages */ \ 30 | MI_STAT_COUNT(reserved) /* reserved memory bytes */ \ 31 | MI_STAT_COUNT(committed) /* committed bytes */ \ 32 | MI_STAT_COUNT(reset) /* reset bytes */ \ 33 | MI_STAT_COUNT(purged) /* purged bytes */ \ 34 | MI_STAT_COUNT(page_committed) /* committed memory inside pages */ \ 35 | MI_STAT_COUNT(pages_abandoned) /* abandonded pages count */ \ 36 | MI_STAT_COUNT(threads) /* number of threads */ \ 37 | MI_STAT_COUNT(malloc_normal) /* allocated bytes <= MI_LARGE_OBJ_SIZE_MAX */ \ 38 | MI_STAT_COUNT(malloc_huge) /* allocated bytes in huge pages */ \ 39 | MI_STAT_COUNT(malloc_requested) /* malloc requested bytes */ \ 40 | \ 41 | MI_STAT_COUNTER(mmap_calls) \ 42 | MI_STAT_COUNTER(commit_calls) \ 43 | MI_STAT_COUNTER(reset_calls) \ 44 | MI_STAT_COUNTER(purge_calls) \ 45 | MI_STAT_COUNTER(arena_count) /* number of memory arena's */ \ 46 | MI_STAT_COUNTER(malloc_normal_count) /* number of blocks <= MI_LARGE_OBJ_SIZE_MAX */ \ 47 | MI_STAT_COUNTER(malloc_huge_count) /* number of huge bloks */ \ 48 | MI_STAT_COUNTER(malloc_guarded_count) /* number of allocations with guard pages */ \ 49 | \ 50 | /* internal statistics */ \ 51 | MI_STAT_COUNTER(arena_rollback_count) \ 52 | MI_STAT_COUNTER(arena_purges) \ 53 | MI_STAT_COUNTER(pages_extended) /* number of page extensions */ \ 54 | MI_STAT_COUNTER(pages_retire) /* number of pages that are retired */ \ 55 | MI_STAT_COUNTER(page_searches) /* searches for a fresh page */ \ 56 | /* only on v1 and v2 */ \ 57 | MI_STAT_COUNT(segments) \ 58 | MI_STAT_COUNT(segments_abandoned) \ 59 | MI_STAT_COUNT(segments_cache) \ 60 | MI_STAT_COUNT(_segments_reserved) \ 61 | /* only on v3 */ \ 62 | MI_STAT_COUNTER(pages_reclaim_on_alloc) \ 63 | MI_STAT_COUNTER(pages_reclaim_on_free) \ 64 | MI_STAT_COUNTER(pages_reabandon_full) \ 65 | MI_STAT_COUNTER(pages_unabandon_busy_wait) \ 66 | 67 | 68 | // Define the statistics structure 69 | #define MI_BIN_HUGE (73U) // see types.h 70 | #define MI_STAT_COUNT(stat) mi_stat_count_t stat; 71 | #define MI_STAT_COUNTER(stat) mi_stat_counter_t stat; 72 | 73 | typedef struct mi_stats_s 74 | { 75 | int version; 76 | 77 | MI_STAT_FIELDS() 78 | 79 | // future extension 80 | mi_stat_count_t _stat_reserved[4]; 81 | mi_stat_counter_t _stat_counter_reserved[4]; 82 | 83 | // size segregated statistics 84 | mi_stat_count_t malloc_bins[MI_BIN_HUGE+1]; // allocation per size bin 85 | mi_stat_count_t page_bins[MI_BIN_HUGE+1]; // pages allocated per size bin 86 | } mi_stats_t; 87 | 88 | #undef MI_STAT_COUNT 89 | #undef MI_STAT_COUNTER 90 | 91 | // Exported definitions 92 | #ifdef __cplusplus 93 | extern "C" { 94 | #endif 95 | 96 | mi_decl_export void mi_stats_get( size_t stats_size, mi_stats_t* stats ) mi_attr_noexcept; 97 | mi_decl_export char* mi_stats_get_json( size_t buf_size, char* buf ) mi_attr_noexcept; // use mi_free to free the result if the input buf == NULL 98 | 99 | #ifdef __cplusplus 100 | } 101 | #endif 102 | 103 | #endif // MIMALLOC_STATS_H 104 | -------------------------------------------------------------------------------- /include/mimalloc/track.h: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------------- 2 | Copyright (c) 2018-2023, 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_TRACK_H 9 | #define MIMALLOC_TRACK_H 10 | 11 | /* ------------------------------------------------------------------------------------------------------ 12 | Track memory ranges with macros for tools like Valgrind address sanitizer, or other memory checkers. 13 | These can be defined for tracking allocation: 14 | 15 | #define mi_track_malloc_size(p,reqsize,size,zero) 16 | #define mi_track_free_size(p,_size) 17 | 18 | The macros are set up such that the size passed to `mi_track_free_size` 19 | always matches the size of `mi_track_malloc_size`. (currently, `size == mi_usable_size(p)`). 20 | The `reqsize` is what the user requested, and `size >= reqsize`. 21 | The `size` is either byte precise (and `size==reqsize`) if `MI_PADDING` is enabled, 22 | or otherwise it is the usable block size which may be larger than the original request. 23 | Use `_mi_block_size_of(void* p)` to get the full block size that was allocated (including padding etc). 24 | The `zero` parameter is `true` if the allocated block is zero initialized. 25 | 26 | Optional: 27 | 28 | #define mi_track_align(p,alignedp,offset,size) 29 | #define mi_track_resize(p,oldsize,newsize) 30 | #define mi_track_init() 31 | 32 | The `mi_track_align` is called right after a `mi_track_malloc` for aligned pointers in a block. 33 | The corresponding `mi_track_free` still uses the block start pointer and original size (corresponding to the `mi_track_malloc`). 34 | The `mi_track_resize` is currently unused but could be called on reallocations within a block. 35 | `mi_track_init` is called at program start. 36 | 37 | The following macros are for tools like asan and valgrind to track whether memory is 38 | defined, undefined, or not accessible at all: 39 | 40 | #define mi_track_mem_defined(p,size) 41 | #define mi_track_mem_undefined(p,size) 42 | #define mi_track_mem_noaccess(p,size) 43 | 44 | -------------------------------------------------------------------------------------------------------*/ 45 | 46 | #if MI_TRACK_VALGRIND 47 | // valgrind tool 48 | 49 | #define MI_TRACK_ENABLED 1 50 | #define MI_TRACK_HEAP_DESTROY 1 // track free of individual blocks on heap_destroy 51 | #define MI_TRACK_TOOL "valgrind" 52 | 53 | #include <valgrind/valgrind.h> 54 | #include <valgrind/memcheck.h> 55 | 56 | #define mi_track_malloc_size(p,reqsize,size,zero) VALGRIND_MALLOCLIKE_BLOCK(p,size,MI_PADDING_SIZE /*red zone*/,zero) 57 | #define mi_track_free_size(p,_size) VALGRIND_FREELIKE_BLOCK(p,MI_PADDING_SIZE /*red zone*/) 58 | #define mi_track_resize(p,oldsize,newsize) VALGRIND_RESIZEINPLACE_BLOCK(p,oldsize,newsize,MI_PADDING_SIZE /*red zone*/) 59 | #define mi_track_mem_defined(p,size) VALGRIND_MAKE_MEM_DEFINED(p,size) 60 | #define mi_track_mem_undefined(p,size) VALGRIND_MAKE_MEM_UNDEFINED(p,size) 61 | #define mi_track_mem_noaccess(p,size) VALGRIND_MAKE_MEM_NOACCESS(p,size) 62 | 63 | #elif MI_TRACK_ASAN 64 | // address sanitizer 65 | 66 | #define MI_TRACK_ENABLED 1 67 | #define MI_TRACK_HEAP_DESTROY 0 68 | #define MI_TRACK_TOOL "asan" 69 | 70 | #include <sanitizer/asan_interface.h> 71 | 72 | #define mi_track_malloc_size(p,reqsize,size,zero) ASAN_UNPOISON_MEMORY_REGION(p,size) 73 | #define mi_track_free_size(p,size) ASAN_POISON_MEMORY_REGION(p,size) 74 | #define mi_track_mem_defined(p,size) ASAN_UNPOISON_MEMORY_REGION(p,size) 75 | #define mi_track_mem_undefined(p,size) ASAN_UNPOISON_MEMORY_REGION(p,size) 76 | #define mi_track_mem_noaccess(p,size) ASAN_POISON_MEMORY_REGION(p,size) 77 | 78 | #elif MI_TRACK_ETW 79 | // windows event tracing 80 | 81 | #define MI_TRACK_ENABLED 1 82 | #define MI_TRACK_HEAP_DESTROY 1 83 | #define MI_TRACK_TOOL "ETW" 84 | 85 | #include "../src/prim/windows/etw.h" 86 | 87 | #define mi_track_init() EventRegistermicrosoft_windows_mimalloc(); 88 | #define mi_track_malloc_size(p,reqsize,size,zero) EventWriteETW_MI_ALLOC((UINT64)(p), size) 89 | #define mi_track_free_size(p,size) EventWriteETW_MI_FREE((UINT64)(p), size) 90 | 91 | #else 92 | // no tracking 93 | 94 | #define MI_TRACK_ENABLED 0 95 | #define MI_TRACK_HEAP_DESTROY 0 96 | #define MI_TRACK_TOOL "none" 97 | 98 | #define mi_track_malloc_size(p,reqsize,size,zero) 99 | #define mi_track_free_size(p,_size) 100 | 101 | #endif 102 | 103 | // ------------------- 104 | // Utility definitions 105 | 106 | #ifndef mi_track_resize 107 | #define mi_track_resize(p,oldsize,newsize) mi_track_free_size(p,oldsize); mi_track_malloc(p,newsize,false) 108 | #endif 109 | 110 | #ifndef mi_track_align 111 | #define mi_track_align(p,alignedp,offset,size) mi_track_mem_noaccess(p,offset) 112 | #endif 113 | 114 | #ifndef mi_track_init 115 | #define mi_track_init() 116 | #endif 117 | 118 | #ifndef mi_track_mem_defined 119 | #define mi_track_mem_defined(p,size) 120 | #endif 121 | 122 | #ifndef mi_track_mem_undefined 123 | #define mi_track_mem_undefined(p,size) 124 | #endif 125 | 126 | #ifndef mi_track_mem_noaccess 127 | #define mi_track_mem_noaccess(p,size) 128 | #endif 129 | 130 | 131 | #if MI_PADDING 132 | #define mi_track_malloc(p,reqsize,zero) \ 133 | if ((p)!=NULL) { \ 134 | mi_assert_internal(mi_usable_size(p)==(reqsize)); \ 135 | mi_track_malloc_size(p,reqsize,reqsize,zero); \ 136 | } 137 | #else 138 | #define mi_track_malloc(p,reqsize,zero) \ 139 | if ((p)!=NULL) { \ 140 | mi_assert_internal(mi_usable_size(p)>=(reqsize)); \ 141 | mi_track_malloc_size(p,reqsize,mi_usable_size(p),zero); \ 142 | } 143 | #endif 144 | 145 | #endif 146 | -------------------------------------------------------------------------------- /mimalloc.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@CMAKE_INSTALL_PREFIX@ 2 | libdir=@mi_pc_libdir@ 3 | includedir=@mi_pc_includedir@ 4 | 5 | Name: @PROJECT_NAME@ 6 | Description: A compact general purpose allocator with excellent performance 7 | Version: @PACKAGE_VERSION@ 8 | URL: https://github.com/microsoft/mimalloc/ 9 | Libs: -L${libdir} -l@mi_libname@ 10 | Libs.private: @mi_pc_libraries@ 11 | Cflags: -I${includedir} 12 | -------------------------------------------------------------------------------- /src/prim/osx/prim.c: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------------- 2 | Copyright (c) 2018-2023, 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 | 8 | // We use the unix/prim.c with the mmap API on macOSX 9 | #include "../unix/prim.c" 10 | -------------------------------------------------------------------------------- /src/prim/prim.c: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------------- 2 | Copyright (c) 2018-2023, 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 | 8 | // Select the implementation of the primitives 9 | // depending on the OS. 10 | 11 | #if defined(_WIN32) 12 | #include "windows/prim.c" // VirtualAlloc (Windows) 13 | 14 | #elif defined(__APPLE__) 15 | #include "osx/prim.c" // macOSX (actually defers to mmap in unix/prim.c) 16 | 17 | #elif defined(__wasi__) 18 | #define MI_USE_SBRK 19 | #include "wasi/prim.c" // memory-grow or sbrk (Wasm) 20 | 21 | #elif defined(__EMSCRIPTEN__) 22 | #include "emscripten/prim.c" // emmalloc_*, + pthread support 23 | 24 | #else 25 | #include "unix/prim.c" // mmap() (Linux, macOSX, BSD, Illumnos, Haiku, DragonFly, etc.) 26 | 27 | #endif 28 | 29 | // Generic process initialization 30 | #ifndef MI_PRIM_HAS_PROCESS_ATTACH 31 | #if defined(__GNUC__) || defined(__clang__) 32 | // gcc,clang: use the constructor/destructor attribute 33 | // which for both seem to run before regular constructors/destructors 34 | #if defined(__clang__) 35 | #define mi_attr_constructor __attribute__((constructor(101))) 36 | #define mi_attr_destructor __attribute__((destructor(101))) 37 | #else 38 | #define mi_attr_constructor __attribute__((constructor)) 39 | #define mi_attr_destructor __attribute__((destructor)) 40 | #endif 41 | static void mi_attr_constructor mi_process_attach(void) { 42 | _mi_auto_process_init(); 43 | } 44 | static void mi_attr_destructor mi_process_detach(void) { 45 | _mi_auto_process_done(); 46 | } 47 | #elif defined(__cplusplus) 48 | // C++: use static initialization to detect process start/end 49 | // This is not guaranteed to be first/last but the best we can generally do? 50 | struct mi_init_done_t { 51 | mi_init_done_t() { 52 | _mi_auto_process_init(); 53 | } 54 | ~mi_init_done_t() { 55 | _mi_auto_process_done(); 56 | } 57 | }; 58 | static mi_init_done_t mi_init_done; 59 | #else 60 | #pragma message("define a way to call _mi_auto_process_init/done on your platform") 61 | #endif 62 | #endif 63 | 64 | // Generic allocator init/done callback 65 | #ifndef MI_PRIM_HAS_ALLOCATOR_INIT 66 | bool _mi_is_redirected(void) { 67 | return false; 68 | } 69 | bool _mi_allocator_init(const char** message) { 70 | if (message != NULL) { *message = NULL; } 71 | return true; 72 | } 73 | void _mi_allocator_done(void) { 74 | // nothing to do 75 | } 76 | #endif 77 | -------------------------------------------------------------------------------- /src/prim/readme.md: -------------------------------------------------------------------------------- 1 | ## Portability Primitives 2 | 3 | This is the portability layer where all primitives needed from the OS are defined. 4 | 5 | - `include/mimalloc/prim.h`: primitive portability API definition. 6 | - `prim.c`: Selects one of `unix/prim.c`, `wasi/prim.c`, or `windows/prim.c` depending on the host platform 7 | (and on macOS, `osx/prim.c` defers to `unix/prim.c`). 8 | 9 | Note: still work in progress, there may still be places in the sources that still depend on OS ifdef's. -------------------------------------------------------------------------------- /src/prim/windows/etw-mimalloc.wprp: -------------------------------------------------------------------------------- 1 | <WindowsPerformanceRecorder Version="1.0"> 2 | <Profiles> 3 | <SystemCollector Id="WPR_initiated_WprApp_WPR_System_Collector" Name="WPR_initiated_WprApp_WPR System Collector"> 4 | <BufferSize Value="1024" /> 5 | <Buffers Value="100" /> 6 | </SystemCollector> 7 | <EventCollector Id="Mimalloc_Collector" Name="Mimalloc Collector"> 8 | <BufferSize Value="1024" /> 9 | <Buffers Value="100" /> 10 | </EventCollector> 11 | <SystemProvider Id="WPR_initiated_WprApp_WPR_System_Collector_Provider"> 12 | <Keywords> 13 | <Keyword Value="Loader" /> 14 | </Keywords> 15 | </SystemProvider> 16 | <EventProvider Id="MimallocEventProvider" Name="138f4dbb-ee04-4899-aa0a-572ad4475779" NonPagedMemory="true" Stack="true"> 17 | <EventFilters FilterIn="true"> 18 | <EventId Value="100" /> 19 | <EventId Value="101" /> 20 | </EventFilters> 21 | </EventProvider> 22 | <Profile Id="CustomHeap.Verbose.File" Name="CustomHeap" Description="RunningProfile:CustomHeap.Verbose.File" LoggingMode="File" DetailLevel="Verbose"> 23 | <ProblemCategories> 24 | <ProblemCategory Value="Resource Analysis" /> 25 | </ProblemCategories> 26 | <Collectors> 27 | <SystemCollectorId Value="WPR_initiated_WprApp_WPR_System_Collector"> 28 | <SystemProviderId Value="WPR_initiated_WprApp_WPR_System_Collector_Provider" /> 29 | </SystemCollectorId> 30 | <EventCollectorId Value="Mimalloc_Collector"> 31 | <EventProviders> 32 | <EventProviderId Value="MimallocEventProvider" > 33 | <Keywords> 34 | <Keyword Value="100"/> 35 | <Keyword Value="101"/> 36 | </Keywords> 37 | </EventProviderId> 38 | </EventProviders> 39 | </EventCollectorId> 40 | </Collectors> 41 | <TraceMergeProperties> 42 | <TraceMergeProperty Id="BaseVerboseTraceMergeProperties" Name="BaseTraceMergeProperties"> 43 | <DeletePreMergedTraceFiles Value="true" /> 44 | <FileCompression Value="false" /> 45 | <InjectOnly Value="false" /> 46 | <SkipMerge Value="false" /> 47 | <CustomEvents> 48 | <CustomEvent Value="ImageId" /> 49 | <CustomEvent Value="BuildInfo" /> 50 | <CustomEvent Value="VolumeMapping" /> 51 | <CustomEvent Value="EventMetadata" /> 52 | <CustomEvent Value="PerfTrackMetadata" /> 53 | <CustomEvent Value="WinSAT" /> 54 | <CustomEvent Value="NetworkInterface" /> 55 | </CustomEvents> 56 | </TraceMergeProperty> 57 | </TraceMergeProperties> 58 | </Profile> 59 | </Profiles> 60 | </WindowsPerformanceRecorder> 61 | 62 | -------------------------------------------------------------------------------- /src/prim/windows/etw.man: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mimalloc/09a27098aa6e9286518bd9c74e6ffa7199c3f04e/src/prim/windows/etw.man -------------------------------------------------------------------------------- /src/prim/windows/readme.md: -------------------------------------------------------------------------------- 1 | ## Primitives: 2 | 3 | - `prim.c` contains Windows primitives for OS allocation. 4 | 5 | ## Event Tracing for Windows (ETW) 6 | 7 | - `etw.h` is generated from `etw.man` which contains the manifest for mimalloc events. 8 | (100 is an allocation, 101 is for a free) 9 | 10 | - `etw-mimalloc.wprp` is a profile for the Windows Performance Recorder (WPR). 11 | In an admin prompt, you can use: 12 | ``` 13 | > wpr -start src\prim\windows\etw-mimalloc.wprp -filemode 14 | > <my mimalloc program> 15 | > wpr -stop test.etl 16 | ``` 17 | and then open `test.etl` in the Windows Performance Analyzer (WPA). -------------------------------------------------------------------------------- /src/static.c: -------------------------------------------------------------------------------- 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 | #ifndef _DEFAULT_SOURCE 8 | #define _DEFAULT_SOURCE 9 | #endif 10 | #if defined(__sun) 11 | // same remarks as os.c for the static's context. 12 | #undef _XOPEN_SOURCE 13 | #undef _POSIX_C_SOURCE 14 | #endif 15 | 16 | #include "mimalloc.h" 17 | #include "mimalloc/internal.h" 18 | 19 | // For a static override we create a single object file 20 | // containing the whole library. If it is linked first 21 | // it will override all the standard library allocation 22 | // functions (on Unix's). 23 | #include "alloc.c" // includes alloc-override.c 24 | #include "alloc-aligned.c" 25 | #include "alloc-posix.c" 26 | #include "arena.c" 27 | #include "bitmap.c" 28 | #include "heap.c" 29 | #include "init.c" 30 | #include "libc.c" 31 | #include "options.c" 32 | #include "os.c" 33 | #include "page.c" // includes page-queue.c 34 | #include "random.c" 35 | #include "segment.c" 36 | #include "segment-map.c" 37 | #include "stats.c" 38 | #include "prim/prim.c" 39 | #if MI_OSX_ZONE 40 | #include "prim/osx/alloc-override-zone.c" 41 | #endif 42 | -------------------------------------------------------------------------------- /test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.18) 2 | project(mimalloc-test C CXX) 3 | 4 | set(CMAKE_C_STANDARD 11) 5 | set(CMAKE_CXX_STANDARD 17) 6 | 7 | # Set default build type 8 | if (NOT CMAKE_BUILD_TYPE) 9 | if ("${CMAKE_BINARY_DIR}" MATCHES ".*(D|d)ebugquot;) 10 | message(STATUS "No build type selected, default to *** Debug ***") 11 | set(CMAKE_BUILD_TYPE "Debug") 12 | else() 13 | message(STATUS "No build type selected, default to *** Release ***") 14 | set(CMAKE_BUILD_TYPE "Release") 15 | endif() 16 | endif() 17 | 18 | # Import mimalloc (if installed) 19 | find_package(mimalloc 2.2 CONFIG REQUIRED) 20 | message(STATUS "Found mimalloc installed at: ${MIMALLOC_LIBRARY_DIR} (${MIMALLOC_VERSION_DIR})") 21 | 22 | 23 | # link with a dynamic shared library 24 | # use `LD_PRELOAD` to actually override malloc/free at runtime with mimalloc 25 | add_executable(dynamic-override main-override.c) 26 | target_link_libraries(dynamic-override PUBLIC mimalloc) 27 | 28 | add_executable(dynamic-override-cxx main-override.cpp) 29 | target_link_libraries(dynamic-override-cxx PUBLIC mimalloc) 30 | 31 | 32 | # overriding with a static object file works reliable as the symbols in the 33 | # object file have priority over those in library files 34 | add_executable(static-override-obj main-override.c ${MIMALLOC_OBJECT_DIR}/mimalloc${CMAKE_C_OUTPUT_EXTENSION}) 35 | target_include_directories(static-override-obj PUBLIC ${MIMALLOC_INCLUDE_DIR}) 36 | target_link_libraries(static-override-obj PUBLIC mimalloc-static) 37 | 38 | 39 | # overriding with a static library works too if using the `mimalloc-override.h` 40 | # header to redefine malloc/free. (the library already overrides new/delete) 41 | add_executable(static-override-static main-override-static.c) 42 | target_link_libraries(static-override-static PUBLIC mimalloc-static) 43 | 44 | 45 | # overriding with a static library: this may not work if the library is linked too late 46 | # on the command line after the C runtime library; but we cannot control that well in CMake 47 | add_executable(static-override main-override.c) 48 | target_link_libraries(static-override PUBLIC mimalloc-static) 49 | 50 | add_executable(static-override-cxx main-override.cpp) 51 | target_link_libraries(static-override-cxx PUBLIC mimalloc-static) 52 | 53 | 54 | ## test memory errors 55 | add_executable(test-wrong test-wrong.c) 56 | target_link_libraries(test-wrong PUBLIC mimalloc) 57 | -------------------------------------------------------------------------------- /test/main-override-dep.cpp: -------------------------------------------------------------------------------- 1 | // Issue #981: test overriding allocation in a DLL that is compiled independent of mimalloc. 2 | // This is imported by the `mimalloc-test-override` project. 3 | #include <string> 4 | #include <iostream> 5 | #include "main-override-dep.h" 6 | 7 | std::string TestAllocInDll::GetString() 8 | { 9 | char* test = new char[128]; 10 | memset(test, 0, 128); 11 | const char* t = "test"; 12 | memcpy(test, t, 4); 13 | std::string r = test; 14 | std::cout << "override-dep: GetString: " << r << "\n"; 15 | delete[] test; 16 | return r; 17 | } 18 | 19 | 20 | class Static { 21 | private: 22 | void* p; 23 | public: 24 | Static() { 25 | printf("override-dep: static constructor\n"); 26 | p = malloc(64); 27 | return; 28 | } 29 | ~Static() { 30 | free(p); 31 | printf("override-dep: static destructor\n"); 32 | return; 33 | } 34 | }; 35 | 36 | static Static s = Static(); 37 | 38 | 39 | #include <windows.h> 40 | 41 | BOOL WINAPI DllMain(HINSTANCE module, DWORD reason, LPVOID reserved) { 42 | (void)(reserved); 43 | (void)(module); 44 | if (reason==DLL_PROCESS_ATTACH) { 45 | printf("override-dep: dll attach\n"); 46 | } 47 | else if (reason==DLL_PROCESS_DETACH) { 48 | printf("override-dep: dll detach\n"); 49 | } 50 | return TRUE; 51 | } 52 | -------------------------------------------------------------------------------- /test/main-override-dep.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Issue #981: test overriding allocation in a DLL that is compiled independent of mimalloc. 3 | // This is imported by the `mimalloc-test-override` project. 4 | 5 | #include <string> 6 | 7 | class TestAllocInDll 8 | { 9 | public: 10 | __declspec(dllexport) std::string GetString(); 11 | }; 12 | -------------------------------------------------------------------------------- /test/main-override.c: -------------------------------------------------------------------------------- 1 | #include <stdlib.h> 2 | #include <stdio.h> 3 | #include <assert.h> 4 | #include <string.h> 5 | 6 | #include <mimalloc-override.h> 7 | 8 | int main() { 9 | mi_version(); // ensure mimalloc library is linked 10 | void* p1 = malloc(78); 11 | void* p2 = malloc(24); 12 | free(p1); 13 | p1 = malloc(8); 14 | //char* s = strdup("hello\n"); 15 | free(p2); 16 | p2 = malloc(16); 17 | p1 = realloc(p1, 32); 18 | free(p1); 19 | free(p2); 20 | //free(s); 21 | //mi_collect(true); 22 | 23 | /* now test if override worked by allocating/freeing across the api's*/ 24 | //p1 = mi_malloc(32); 25 | //free(p1); 26 | //p2 = malloc(32); 27 | //mi_free(p2); 28 | p1 = malloc(24); 29 | p2 = reallocarray(p1, 16, 16); 30 | free(p2); 31 | p1 = malloc(24); 32 | assert(reallocarr(&p1, 16, 16) == 0); 33 | free(p1); 34 | mi_stats_print(NULL); 35 | return 0; 36 | } 37 | -------------------------------------------------------------------------------- /test/main.c: -------------------------------------------------------------------------------- 1 | #include <stdio.h> 2 | #include <assert.h> 3 | #include <mimalloc.h> 4 | 5 | void test_heap(void* p_out) { 6 | mi_heap_t* heap = mi_heap_new(); 7 | void* p1 = mi_heap_malloc(heap,32); 8 | void* p2 = mi_heap_malloc(heap,48); 9 | mi_free(p_out); 10 | mi_heap_destroy(heap); 11 | //mi_heap_delete(heap); mi_free(p1); mi_free(p2); 12 | } 13 | 14 | void test_large() { 15 | const size_t N = 1000; 16 | 17 | for (size_t i = 0; i < N; ++i) { 18 | size_t sz = 1ull << 21; 19 | char* a = mi_mallocn_tp(char,sz); 20 | for (size_t k = 0; k < sz; k++) { a[k] = 'x'; } 21 | mi_free(a); 22 | } 23 | } 24 | 25 | int main() { 26 | void* p1 = mi_malloc(16); 27 | void* p2 = mi_malloc(1000000); 28 | mi_free(p1); 29 | mi_free(p2); 30 | p1 = mi_malloc(16); 31 | p2 = mi_malloc(16); 32 | mi_free(p1); 33 | mi_free(p2); 34 | 35 | test_heap(mi_malloc(32)); 36 | 37 | p1 = mi_malloc_aligned(64, 16); 38 | p2 = mi_malloc_aligned(160,24); 39 | mi_free(p2); 40 | mi_free(p1); 41 | //test_large(); 42 | 43 | mi_collect(true); 44 | mi_stats_print(NULL); 45 | return 0; 46 | } 47 | -------------------------------------------------------------------------------- /test/readme.md: -------------------------------------------------------------------------------- 1 | Testing allocators is difficult as bugs may only surface after particular 2 | allocation patterns. The main approach to testing _mimalloc_ is therefore 3 | to have extensive internal invariant checking (see `page_is_valid` in `page.c` 4 | for example), which is enabled in debug mode with `-DMI_DEBUG_FULL=ON`. 5 | The main testing strategy is then to run [`mimalloc-bench`][bench] using full 6 | invariant checking to catch any potential problems over a wide range of intensive 7 | allocation benchmarks and programs. 8 | 9 | However, this does not test well for the entire API surface and this is tested 10 | with `test-api.c` when using `make test` (from `out/debug` etc). (This is 11 | not complete yet, please add to it.) 12 | 13 | The `main.c` and `main-override.c` are there to test if building and overriding 14 | from a local install works and therefore these build a separate `test/CMakeLists.txt`. 15 | 16 | [bench]: https://github.com/daanx/mimalloc-bench 17 | -------------------------------------------------------------------------------- /test/test-wrong.c: -------------------------------------------------------------------------------- 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 | 8 | /* test file for valgrind/asan support. 9 | 10 | VALGRIND: 11 | ---------- 12 | Compile in an "out/debug" folder: 13 | 14 | > cd out/debug 15 | > cmake ../.. -DMI_TRACK_VALGRIND=1 16 | > make -j8 17 | 18 | and then compile this file as: 19 | 20 | > gcc -g -o test-wrong -I../../include ../../test/test-wrong.c libmimalloc-valgrind-debug.a -lpthread 21 | 22 | and test as: 23 | 24 | > valgrind ./test-wrong 25 | 26 | 27 | ASAN 28 | ---------- 29 | Compile in an "out/debug" folder: 30 | 31 | > cd out/debug 32 | > cmake ../.. -DMI_TRACK_ASAN=1 33 | > make -j8 34 | 35 | and then compile this file as: 36 | 37 | > clang -g -o test-wrong -I../../include ../../test/test-wrong.c libmimalloc-asan-debug.a -lpthread -fsanitize=address -fsanitize-recover=address 38 | 39 | and test as: 40 | 41 | > ASAN_OPTIONS=verbosity=1:halt_on_error=0 ./test-wrong 42 | 43 | 44 | */ 45 | #include <stdio.h> 46 | #include <stdlib.h> 47 | #include "mimalloc.h" 48 | 49 | #ifdef USE_STD_MALLOC 50 | # define mi(x) x 51 | #else 52 | # define mi(x) mi_##x 53 | #endif 54 | 55 | int main(int argc, char** argv) { 56 | int* p = (int*)mi(malloc)(3*sizeof(int)); 57 | 58 | int* r = (int*)mi_malloc_aligned(8,16); 59 | mi_free(r); 60 | 61 | // illegal byte wise read 62 | char* c = (char*)mi(malloc)(3); 63 | printf("invalid byte: over: %d, under: %d\n", c[4], c[-1]); 64 | mi(free)(c); 65 | 66 | // undefined access 67 | int* q = (int*)mi(malloc)(sizeof(int)); 68 | printf("undefined: %d\n", *q); 69 | 70 | // illegal int read 71 | printf("invalid: over: %d, under: %d\n", q[1], q[-1]); 72 | 73 | *q = 42; 74 | 75 | // buffer overflow 76 | q[1] = 43; 77 | 78 | // buffer underflow 79 | q[-1] = 44; 80 | 81 | mi(free)(q); 82 | 83 | // double free 84 | mi(free)(q); 85 | 86 | // use after free 87 | printf("use-after-free: %d\n", *q); 88 | 89 | // leak p 90 | // mi_free(p) 91 | return 0; 92 | } -------------------------------------------------------------------------------- /test/testhelper.h: -------------------------------------------------------------------------------- 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 | #ifndef TESTHELPER_H_ 8 | #define TESTHELPER_H_ 9 | 10 | #include <stdbool.h> 11 | #include <stdio.h> 12 | #include <errno.h> 13 | 14 | // --------------------------------------------------------------------------- 15 | // Test macros: CHECK(name,predicate) and CHECK_BODY(name,body) 16 | // --------------------------------------------------------------------------- 17 | static int ok = 0; 18 | static int failed = 0; 19 | 20 | static bool check_result(bool result, const char* testname, const char* fname, long lineno) { 21 | if (!(result)) { 22 | failed++; 23 | fprintf(stderr,"\n FAILED: %s: %s:%ld\n", testname, fname, lineno); 24 | /* exit(1); */ 25 | } 26 | else { 27 | ok++; 28 | fprintf(stderr, "ok.\n"); 29 | } 30 | return true; 31 | } 32 | 33 | #define CHECK_BODY(name) \ 34 | fprintf(stderr,"test: %s... ", name ); \ 35 | errno = 0; \ 36 | for(bool done = false, result = true; !done; done = check_result(result,name,__FILE__,__LINE__)) 37 | 38 | #define CHECK(name,expr) CHECK_BODY(name){ result = (expr); } 39 | 40 | // Print summary of test. Return value can be directly use as a return value for main(). 41 | static inline int print_test_summary(void) 42 | { 43 | fprintf(stderr,"\n\n---------------------------------------------\n" 44 | "succeeded: %i\n" 45 | "failed : %i\n\n", ok, failed); 46 | return failed; 47 | } 48 | 49 | #endif // TESTHELPER_H_ 50 | --------------------------------------------------------------------------------