merge from dev2: v2.2.2

This commit is contained in:
Daan 2025-03-06 20:59:12 -08:00
commit a62932135a
201 changed files with 13274 additions and 10640 deletions

4
.gitignore vendored
View file

@ -1,7 +1,7 @@
build
ide/vs20??/*.db ide/vs20??/*.db
ide/vs20??/*.opendb ide/vs20??/*.opendb
ide/vs20??/*.user ide/vs20??/*.user
ide/vs20??/*.vcxproj.filters
ide/vs20??/.vs ide/vs20??/.vs
ide/vs20??/VTune* ide/vs20??/VTune*
out/ out/
@ -9,3 +9,5 @@ docs/
*.zip *.zip
*.tar *.tar
*.gz *.gz
.vscode
.DS_STore

View file

@ -7,18 +7,20 @@ set(CMAKE_CXX_STANDARD 17)
option(MI_SECURE "Use full security mitigations (like guard pages, allocation randomization, double-free mitigation, and free-list corruption detection)" OFF) option(MI_SECURE "Use full security mitigations (like guard pages, allocation randomization, double-free mitigation, and free-list corruption detection)" OFF)
option(MI_DEBUG_FULL "Use full internal heap invariant checking in DEBUG mode (expensive)" OFF) option(MI_DEBUG_FULL "Use full internal heap invariant checking in DEBUG mode (expensive)" OFF)
option(MI_PADDING "Enable padding to detect heap block overflow (always on in DEBUG or SECURE mode, or with Valgrind/ASAN)" OFF) option(MI_PADDING "Enable padding to detect heap block overflow (always on in DEBUG or SECURE mode, or with Valgrind/ASAN)" OFF)
option(MI_OVERRIDE "Override the standard malloc interface (e.g. define entry points for malloc() etc)" ON) option(MI_OVERRIDE "Override the standard malloc interface (i.e. define entry points for 'malloc', 'free', etc)" ON)
option(MI_XMALLOC "Enable abort() call on memory allocation failure by default" OFF) option(MI_XMALLOC "Enable abort() call on memory allocation failure by default" OFF)
option(MI_SHOW_ERRORS "Show error and warning messages by default (only enabled by default in DEBUG mode)" OFF) option(MI_SHOW_ERRORS "Show error and warning messages by default (only enabled by default in DEBUG mode)" OFF)
option(MI_TRACK_VALGRIND "Compile with Valgrind support (adds a small overhead)" OFF) option(MI_TRACK_VALGRIND "Compile with Valgrind support (adds a small overhead)" OFF)
option(MI_TRACK_ASAN "Compile with address sanitizer support (adds a small overhead)" OFF) option(MI_TRACK_ASAN "Compile with address sanitizer support (adds a small overhead)" OFF)
option(MI_TRACK_ETW "Compile with Windows event tracing (ETW) support (adds a small overhead)" OFF) option(MI_TRACK_ETW "Compile with Windows event tracing (ETW) support (adds a small overhead)" OFF)
option(MI_USE_CXX "Use the C++ compiler to compile the library (instead of the C compiler)" OFF) option(MI_USE_CXX "Use the C++ compiler to compile the library (instead of the C compiler)" OFF)
option(MI_OPT_ARCH "Only for optimized builds: turn on architecture specific optimizations (for arm64: '-march=armv8.1-a' (2016))" OFF)
option(MI_SEE_ASM "Generate assembly files" OFF) option(MI_SEE_ASM "Generate assembly files" OFF)
option(MI_OSX_INTERPOSE "Use interpose to override standard malloc on macOS" ON) option(MI_OSX_INTERPOSE "Use interpose to override standard malloc on macOS" ON)
option(MI_OSX_ZONE "Use malloc zone to override standard malloc on macOS" ON) option(MI_OSX_ZONE "Use malloc zone to override standard malloc on macOS" ON)
option(MI_WIN_REDIRECT "Use redirection module ('mimalloc-redirect') on Windows if compiling mimalloc as a DLL" ON) option(MI_WIN_REDIRECT "Use redirection module ('mimalloc-redirect') on Windows if compiling mimalloc as a DLL" ON)
option(MI_LOCAL_DYNAMIC_TLS "Use slightly slower, dlopen-compatible TLS mechanism (Unix)" OFF) option(MI_WIN_USE_FIXED_TLS "Use a fixed TLS slot on Windows to avoid extra tests in the malloc fast path" OFF)
option(MI_LOCAL_DYNAMIC_TLS "Use local-dynamic-tls, a slightly slower but dlopen-compatible thread local storage mechanism (Unix)" OFF)
option(MI_LIBC_MUSL "Set this when linking with musl libc" OFF) option(MI_LIBC_MUSL "Set this when linking with musl libc" OFF)
option(MI_BUILD_SHARED "Build shared library" ON) option(MI_BUILD_SHARED "Build shared library" ON)
option(MI_BUILD_STATIC "Build static library" ON) option(MI_BUILD_STATIC "Build static library" ON)
@ -26,12 +28,19 @@ option(MI_BUILD_OBJECT "Build object library" ON)
option(MI_BUILD_TESTS "Build test executables" ON) option(MI_BUILD_TESTS "Build test executables" ON)
option(MI_DEBUG_TSAN "Build with thread sanitizer (needs clang)" OFF) option(MI_DEBUG_TSAN "Build with thread sanitizer (needs clang)" OFF)
option(MI_DEBUG_UBSAN "Build with undefined-behavior sanitizer (needs clang++)" OFF) option(MI_DEBUG_UBSAN "Build with undefined-behavior sanitizer (needs clang++)" OFF)
option(MI_GUARDED "Build with guard pages behind certain object allocations (implies MI_NO_PADDING=ON)" OFF)
option(MI_SKIP_COLLECT_ON_EXIT "Skip collecting memory on program exit" OFF) option(MI_SKIP_COLLECT_ON_EXIT "Skip collecting memory on program exit" OFF)
option(MI_NO_PADDING "Force no use of padding even in DEBUG mode etc." OFF) option(MI_NO_PADDING "Force no use of padding even in DEBUG mode etc." OFF)
option(MI_INSTALL_TOPLEVEL "Install directly into $CMAKE_INSTALL_PREFIX instead of PREFIX/lib/mimalloc-version" OFF) option(MI_INSTALL_TOPLEVEL "Install directly into $CMAKE_INSTALL_PREFIX instead of PREFIX/lib/mimalloc-version" OFF)
option(MI_NO_THP "Disable transparent huge pages support on Linux/Android for the mimalloc process only" OFF) option(MI_NO_THP "Disable transparent huge pages support on Linux/Android for the mimalloc process only" OFF)
option(MI_EXTRA_CPPDEFS "Extra pre-processor definitions (use as `-DMI_EXTRA_CPPDEFS=\"opt1=val1;opt2=val2\"`)" "")
# negated options for vcpkg features
option(MI_NO_USE_CXX "Use plain C compilation (has priority over MI_USE_CXX)" OFF)
option(MI_NO_OPT_ARCH "Do not use architecture specific optimizations (like '-march=armv8.1-a' for example) (has priority over MI_OPT_ARCH)" OFF)
# deprecated options # deprecated options
option(MI_WIN_USE_FLS "Use Fiber local storage on Windows to detect thread termination (deprecated)" OFF)
option(MI_CHECK_FULL "Use full internal invariant checking in DEBUG mode (deprecated, use MI_DEBUG_FULL instead)" OFF) option(MI_CHECK_FULL "Use full internal invariant checking in DEBUG mode (deprecated, use MI_DEBUG_FULL instead)" OFF)
option(MI_USE_LIBATOMIC "Explicitly link with -latomic (on older systems) (deprecated and detected automatically)" OFF) option(MI_USE_LIBATOMIC "Explicitly link with -latomic (on older systems) (deprecated and detected automatically)" OFF)
@ -61,37 +70,101 @@ set(mi_sources
set(mi_cflags "") set(mi_cflags "")
set(mi_cflags_static "") # extra flags for a static library build set(mi_cflags_static "") # extra flags for a static library build
set(mi_cflags_dynamic "") # extra flags for a shared-object library build set(mi_cflags_dynamic "") # extra flags for a shared-object library build
set(mi_defines "")
set(mi_libraries "") set(mi_libraries "")
if(MI_EXTRA_CPPDEFS)
set(mi_defines ${MI_EXTRA_CPPDEFS})
else()
set(mi_defines "")
endif()
# pass git revision as a define
if(EXISTS "${CMAKE_SOURCE_DIR}/.git/index")
find_package(Git)
if(GIT_FOUND)
execute_process(COMMAND ${GIT_EXECUTABLE} "describe" OUTPUT_VARIABLE mi_git_describe RESULT_VARIABLE mi_git_res ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if(mi_git_res EQUAL "0")
list(APPEND mi_defines "MI_GIT_DESCRIBE=${mi_git_describe}")
# add to dependencies so we rebuild if the git head commit changes
set_property(GLOBAL APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/.git/index")
endif()
endif()
endif()
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Convenience: set default build type depending on the build directory # Convenience: set default build type and compiler depending on the build directory
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
message(STATUS "") message(STATUS "")
if (NOT CMAKE_BUILD_TYPE) if (NOT CMAKE_BUILD_TYPE)
if ("${CMAKE_BINARY_DIR}" MATCHES ".*(D|d)ebug$" OR MI_DEBUG_FULL) if ("${CMAKE_BINARY_DIR}" MATCHES ".*((D|d)ebug|asan|tsan|ubsan|valgrind)$" OR MI_DEBUG_FULL)
message(STATUS "No build type selected, default to: Debug") message(STATUS "No build type selected, default to 'Debug'")
set(CMAKE_BUILD_TYPE "Debug") set(CMAKE_BUILD_TYPE "Debug")
else() else()
message(STATUS "No build type selected, default to: Release") message(STATUS "No build type selected, default to 'Release'")
set(CMAKE_BUILD_TYPE "Release") set(CMAKE_BUILD_TYPE "Release")
endif() endif()
endif() endif()
if (CMAKE_GENERATOR MATCHES "^Visual Studio.*$")
message(STATUS "Note: when building with Visual Studio the build type is specified when building.")
message(STATUS "For example: 'cmake --build . --config=Release")
endif()
if("${CMAKE_BINARY_DIR}" MATCHES ".*(S|s)ecure$") if("${CMAKE_BINARY_DIR}" MATCHES ".*(S|s)ecure$")
message(STATUS "Default to secure build") message(STATUS "Default to secure build")
set(MI_SECURE "ON") set(MI_SECURE "ON")
endif() endif()
# Determine architecture
set(MI_OPT_ARCH_FLAGS "")
set(MI_ARCH "unknown")
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86|i[3456]86)$" OR CMAKE_GENERATOR_PLATFORM MATCHES "^(x86|Win32)$")
set(MI_ARCH "x86")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|x64|amd64|AMD64)$" OR CMAKE_GENERATOR_PLATFORM STREQUAL "x64" OR "x86_64" IN_LIST CMAKE_OSX_ARCHITECTURES) # must be before arm64
set(MI_ARCH "x64")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64|armv[89].?|ARM64)$" OR CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64" OR "arm64" IN_LIST CMAKE_OSX_ARCHITECTURES)
set(MI_ARCH "arm64")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|armv[34567]|ARM)$")
set(MI_ARCH "arm32")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(riscv|riscv32|riscv64)$")
if(CMAKE_SIZEOF_VOID_P==4)
set(MI_ARCH "riscv32")
else()
set(MI_ARCH "riscv64")
endif()
else()
set(MI_ARCH ${CMAKE_SYSTEM_PROCESSOR})
endif()
message(STATUS "Architecture: ${MI_ARCH}") # (${CMAKE_SYSTEM_PROCESSOR}, ${CMAKE_GENERATOR_PLATFORM}, ${CMAKE_GENERATOR})")
# negative overrides (mainly to support vcpkg features)
if(MI_NO_USE_CXX)
set(MI_USE_CXX "OFF")
endif()
if(MI_NO_OPT_ARCH)
set(MI_OPT_ARCH "OFF")
elseif(MI_ARCH STREQUAL "arm64")
set(MI_OPT_ARCH "ON") # enable armv8.1-a by default on arm64 unless MI_NO_OPT_ARCH is set
endif()
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Process options # Process options
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
if(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
set(MI_CLANG_CL "ON")
endif()
# put -Wall early so other warnings can be disabled selectively # put -Wall early so other warnings can be disabled selectively
if(CMAKE_C_COMPILER_ID MATCHES "AppleClang|Clang") if(CMAKE_C_COMPILER_ID MATCHES "AppleClang|Clang")
list(APPEND mi_cflags -Wall -Wextra -Wpedantic) if (MI_CLANG_CL)
list(APPEND mi_cflags -W)
else()
list(APPEND mi_cflags -Wall -Wextra -Wpedantic)
endif()
endif() endif()
if(CMAKE_C_COMPILER_ID MATCHES "GNU") if(CMAKE_C_COMPILER_ID MATCHES "GNU")
list(APPEND mi_cflags -Wall -Wextra) list(APPEND mi_cflags -Wall -Wextra)
@ -131,12 +204,6 @@ if(MI_OVERRIDE)
endif() endif()
if(WIN32) if(WIN32)
if (MI_WIN_REDIRECT)
if (MSVC_C_ARCHITECTURE_ID MATCHES "ARM")
message(STATUS "Cannot use redirection on Windows ARM (MI_WIN_REDIRECT=OFF)")
set(MI_WIN_REDIRECT OFF)
endif()
endif()
if (NOT MI_WIN_REDIRECT) if (NOT MI_WIN_REDIRECT)
# use a negative define for backward compatibility # use a negative define for backward compatibility
list(APPEND mi_defines MI_WIN_NOREDIRECT=1) list(APPEND mi_defines MI_WIN_NOREDIRECT=1)
@ -152,8 +219,8 @@ if(MI_TRACK_VALGRIND)
CHECK_INCLUDE_FILES("valgrind/valgrind.h;valgrind/memcheck.h" MI_HAS_VALGRINDH) CHECK_INCLUDE_FILES("valgrind/valgrind.h;valgrind/memcheck.h" MI_HAS_VALGRINDH)
if (NOT MI_HAS_VALGRINDH) if (NOT MI_HAS_VALGRINDH)
set(MI_TRACK_VALGRIND OFF) set(MI_TRACK_VALGRIND OFF)
message(WARNING "Cannot find the 'valgrind/valgrind.h' and 'valgrind/memcheck.h' -- install valgrind first") message(WARNING "Cannot find the 'valgrind/valgrind.h' and 'valgrind/memcheck.h' -- install valgrind first?")
message(STATUS "Compile **without** Valgrind support (MI_TRACK_VALGRIND=OFF)") message(STATUS "Disabling Valgrind support (MI_TRACK_VALGRIND=OFF)")
else() else()
message(STATUS "Compile with Valgrind support (MI_TRACK_VALGRIND=ON)") message(STATUS "Compile with Valgrind support (MI_TRACK_VALGRIND=ON)")
list(APPEND mi_defines MI_TRACK_VALGRIND=1) list(APPEND mi_defines MI_TRACK_VALGRIND=1)
@ -199,6 +266,15 @@ if(MI_TRACK_ETW)
endif() endif()
endif() endif()
if(MI_GUARDED)
message(STATUS "Compile guard pages behind certain object allocations (MI_GUARDED=ON)")
list(APPEND mi_defines MI_GUARDED=1)
if(NOT MI_NO_PADDING)
message(STATUS " Disabling padding due to guard pages (MI_NO_PADDING=ON)")
set(MI_NO_PADDING ON)
endif()
endif()
if(MI_SEE_ASM) if(MI_SEE_ASM)
message(STATUS "Generate assembly listings (MI_SEE_ASM=ON)") message(STATUS "Generate assembly listings (MI_SEE_ASM=ON)")
list(APPEND mi_cflags -save-temps) list(APPEND mi_cflags -save-temps)
@ -258,6 +334,7 @@ if(MI_DEBUG_UBSAN)
if(CMAKE_BUILD_TYPE MATCHES "Debug") if(CMAKE_BUILD_TYPE MATCHES "Debug")
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
message(STATUS "Build with undefined-behavior sanitizer (MI_DEBUG_UBSAN=ON)") message(STATUS "Build with undefined-behavior sanitizer (MI_DEBUG_UBSAN=ON)")
list(APPEND mi_defines MI_UBSAN=1)
list(APPEND mi_cflags -fsanitize=undefined -g -fno-sanitize-recover=undefined) list(APPEND mi_cflags -fsanitize=undefined -g -fno-sanitize-recover=undefined)
list(APPEND mi_libraries -fsanitize=undefined) list(APPEND mi_libraries -fsanitize=undefined)
if (NOT MI_USE_CXX) if (NOT MI_USE_CXX)
@ -296,6 +373,26 @@ if(MI_LIBC_MUSL)
list(APPEND mi_defines MI_LIBC_MUSL=1) list(APPEND mi_defines MI_LIBC_MUSL=1)
endif() endif()
if(MI_WIN_USE_FLS)
message(STATUS "Use the Fiber API to detect thread termination (deprecated) (MI_WIN_USE_FLS=ON)")
list(APPEND mi_defines MI_WIN_USE_FLS=1)
endif()
if(MI_WIN_USE_FIXED_TLS)
message(STATUS "Use fixed TLS slot on Windows to avoid extra tests in the malloc fast path (MI_WIN_USE_FIXED_TLS=ON)")
list(APPEND mi_defines MI_WIN_USE_FIXED_TLS=1)
endif()
# Check /proc/cpuinfo for an SV39 MMU and limit the virtual address bits.
# (this will skip the aligned hinting in that case. Issue #939, #949)
if (EXISTS /proc/cpuinfo)
file(STRINGS /proc/cpuinfo mi_sv39_mmu REGEX "^mmu[ \t]+:[ \t]+sv39$")
if (mi_sv39_mmu)
MESSAGE( STATUS "Set virtual address bits to 39 (SV39 MMU detected)" )
list(APPEND mi_defines MI_DEFAULT_VIRTUAL_ADDRESS_BITS=39)
endif()
endif()
# On Haiku use `-DCMAKE_INSTALL_PREFIX` instead, issue #788 # On Haiku use `-DCMAKE_INSTALL_PREFIX` instead, issue #788
# if(CMAKE_SYSTEM_NAME MATCHES "Haiku") # if(CMAKE_SYSTEM_NAME MATCHES "Haiku")
# SET(CMAKE_INSTALL_LIBDIR ~/config/non-packaged/lib) # SET(CMAKE_INSTALL_LIBDIR ~/config/non-packaged/lib)
@ -303,7 +400,7 @@ endif()
# endif() # endif()
# Compiler flags # Compiler flags
if(CMAKE_C_COMPILER_ID MATCHES "AppleClang|Clang|GNU") if(CMAKE_C_COMPILER_ID MATCHES "AppleClang|Clang|GNU" AND NOT MI_CLANG_CL)
list(APPEND mi_cflags -Wno-unknown-pragmas -fvisibility=hidden) list(APPEND mi_cflags -Wno-unknown-pragmas -fvisibility=hidden)
if(NOT MI_USE_CXX) if(NOT MI_USE_CXX)
list(APPEND mi_cflags -Wstrict-prototypes) list(APPEND mi_cflags -Wstrict-prototypes)
@ -317,7 +414,7 @@ if(CMAKE_C_COMPILER_ID MATCHES "Intel")
list(APPEND mi_cflags -fvisibility=hidden) list(APPEND mi_cflags -fvisibility=hidden)
endif() endif()
if(CMAKE_C_COMPILER_ID MATCHES "AppleClang|Clang|GNU|Intel" AND NOT CMAKE_SYSTEM_NAME MATCHES "Haiku") if(CMAKE_C_COMPILER_ID MATCHES "AppleClang|Clang|GNU|Intel" AND NOT CMAKE_SYSTEM_NAME MATCHES "Haiku" AND NOT MI_CLANG_CL)
if(MI_LOCAL_DYNAMIC_TLS) if(MI_LOCAL_DYNAMIC_TLS)
list(APPEND mi_cflags -ftls-model=local-dynamic) list(APPEND mi_cflags -ftls-model=local-dynamic)
else() else()
@ -327,7 +424,7 @@ if(CMAKE_C_COMPILER_ID MATCHES "AppleClang|Clang|GNU|Intel" AND NOT CMAKE_SYSTEM
list(APPEND mi_cflags_dynamic -ftls-model=initial-exec) list(APPEND mi_cflags_dynamic -ftls-model=initial-exec)
message(STATUS "Use local dynamic TLS for the static build (since MI_LIBC_MUSL=ON)") message(STATUS "Use local dynamic TLS for the static build (since MI_LIBC_MUSL=ON)")
else() else()
list(APPEND mi_cflags -ftls-model=initial-exec) list(APPEND mi_cflags -ftls-model=initial-exec)
endif() endif()
endif() endif()
if(MI_OVERRIDE) if(MI_OVERRIDE)
@ -335,28 +432,50 @@ if(CMAKE_C_COMPILER_ID MATCHES "AppleClang|Clang|GNU|Intel" AND NOT CMAKE_SYSTEM
endif() endif()
endif() endif()
if(CMAKE_C_COMPILER_ID MATCHES "AppleClang|Clang|GNU|Intel" AND NOT CMAKE_SYSTEM_NAME MATCHES "Haiku")
if(MI_OPT_ARCH)
if(APPLE AND CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_OSX_ARCHITECTURES) # to support multi-arch binaries (#999)
if("arm64" IN_LIST CMAKE_OSX_ARCHITECTURES)
list(APPEND MI_OPT_ARCH_FLAGS "-Xarch_arm64;-march=armv8.1-a")
endif()
elseif(MI_ARCH STREQUAL "arm64")
set(MI_OPT_ARCH_FLAGS "-march=armv8.1-a") # fast atomics
endif()
endif()
endif()
if (MSVC AND MSVC_VERSION GREATER_EQUAL 1914) if (MSVC AND MSVC_VERSION GREATER_EQUAL 1914)
list(APPEND mi_cflags /Zc:__cplusplus) list(APPEND mi_cflags /Zc:__cplusplus)
if(MI_OPT_ARCH AND NOT MI_CLANG_CL)
if(MI_ARCH STREQUAL "arm64")
set(MI_OPT_ARCH_FLAGS "/arch:armv8.1") # fast atomics
endif()
endif()
endif() endif()
if(MINGW) if(MINGW)
add_definitions(-D_WIN32_WINNT=0x600) add_definitions(-D_WIN32_WINNT=0x600) # issue #976
endif()
if(MI_OPT_ARCH_FLAGS)
list(APPEND mi_cflags ${MI_OPT_ARCH_FLAGS})
message(STATUS "Architecture specific optimization is enabled (with ${MI_OPT_ARCH_FLAGS}) (MI_OPT_ARCH=ON)")
endif() endif()
# extra needed libraries # extra needed libraries
# we prefer -l<lib> test over `find_library` as sometimes core libraries # we prefer -l<lib> test over `find_library` as sometimes core libraries
# like `libatomic` are not on the system path (see issue #898) # like `libatomic` are not on the system path (see issue #898)
function(find_link_library libname outlibname) function(find_link_library libname outlibname)
check_linker_flag(C "-l${libname}" mi_has_lib${libname}) check_linker_flag(C "-l${libname}" mi_has_lib${libname})
if (mi_has_lib${libname}) if (mi_has_lib${libname})
message(VERBOSE "link library: -l${libname}") message(VERBOSE "link library: -l${libname}")
set(${outlibname} ${libname} PARENT_SCOPE) set(${outlibname} ${libname} PARENT_SCOPE)
else() else()
find_library(MI_LIBPATH libname) find_library(MI_LIBPATH libname)
if (MI_LIBPATH) if (MI_LIBPATH)
message(VERBOSE "link library ${libname} at ${MI_LIBPATH}") message(VERBOSE "link library ${libname} at ${MI_LIBPATH}")
set(${outlibname} ${MI_LIBPATH} PARENT_SCOPE) set(${outlibname} ${MI_LIBPATH} PARENT_SCOPE)
else() else()
message(VERBOSE "link library not found: ${libname}") message(VERBOSE "link library not found: ${libname}")
set(${outlibname} "" PARENT_SCOPE) set(${outlibname} "" PARENT_SCOPE)
@ -365,29 +484,29 @@ function(find_link_library libname outlibname)
endfunction() endfunction()
if(WIN32) if(WIN32)
list(APPEND mi_libraries psapi shell32 user32 advapi32 bcrypt) list(APPEND mi_libraries psapi shell32 user32 advapi32 bcrypt)
else() else()
find_link_library("pthread" MI_LIB_PTHREAD) find_link_library("pthread" MI_LIB_PTHREAD)
if(MI_LIB_PTHREAD) if(MI_LIB_PTHREAD)
list(APPEND mi_libraries "${MI_LIB_PTHREAD}") list(APPEND mi_libraries "${MI_LIB_PTHREAD}")
endif() endif()
find_link_library("rt" MI_LIB_RT) find_link_library("rt" MI_LIB_RT)
if(MI_LIB_RT) if(MI_LIB_RT)
list(APPEND mi_libraries "${MI_LIB_RT}") list(APPEND mi_libraries "${MI_LIB_RT}")
endif() endif()
find_link_library("atomic" MI_LIB_ATOMIC) find_link_library("atomic" MI_LIB_ATOMIC)
if(MI_LIB_ATOMIC) if(MI_LIB_ATOMIC)
list(APPEND mi_libraries "${MI_LIB_ATOMIC}") list(APPEND mi_libraries "${MI_LIB_ATOMIC}")
endif() endif()
endif() endif()
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Install and output names # Install and output names
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# dynamic/shared library and symlinks always go to /usr/local/lib equivalent # dynamic/shared library and symlinks always go to /usr/local/lib equivalent
set(mi_install_libdir "${CMAKE_INSTALL_LIBDIR}") # we use ${CMAKE_INSTALL_BINDIR} and ${CMAKE_INSTALL_LIBDIR}.
set(mi_install_bindir "${CMAKE_INSTALL_BINDIR}")
# static libraries and object files, includes, and cmake config files # static libraries and object files, includes, and cmake config files
# are either installed at top level, or use versioned directories for side-by-side installation (default) # are either installed at top level, or use versioned directories for side-by-side installation (default)
@ -401,19 +520,20 @@ else()
set(mi_install_cmakedir "${CMAKE_INSTALL_LIBDIR}/cmake/mimalloc-${mi_version}") # for cmake package info set(mi_install_cmakedir "${CMAKE_INSTALL_LIBDIR}/cmake/mimalloc-${mi_version}") # for cmake package info
endif() endif()
set(mi_basename "mimalloc") set(mi_libname "mimalloc")
if(MI_SECURE) if(MI_SECURE)
set(mi_basename "${mi_basename}-secure") set(mi_libname "${mi_libname}-secure")
endif() endif()
if(MI_TRACK_VALGRIND) if(MI_TRACK_VALGRIND)
set(mi_basename "${mi_basename}-valgrind") set(mi_libname "${mi_libname}-valgrind")
endif() endif()
if(MI_TRACK_ASAN) if(MI_TRACK_ASAN)
set(mi_basename "${mi_basename}-asan") set(mi_libname "${mi_libname}-asan")
endif() endif()
string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LC) string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LC)
list(APPEND mi_defines "MI_CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE_LC}") #todo: multi-config project needs $<CONFIG> ?
if(NOT(CMAKE_BUILD_TYPE_LC MATCHES "^(release|relwithdebinfo|minsizerel|none)$")) if(NOT(CMAKE_BUILD_TYPE_LC MATCHES "^(release|relwithdebinfo|minsizerel|none)$"))
set(mi_basename "${mi_basename}-${CMAKE_BUILD_TYPE_LC}") #append build type (e.g. -debug) if not a release version set(mi_libname "${mi_libname}-${CMAKE_BUILD_TYPE_LC}") #append build type (e.g. -debug) if not a release version
endif() endif()
if(MI_BUILD_SHARED) if(MI_BUILD_SHARED)
@ -430,8 +550,8 @@ if(MI_BUILD_TESTS)
endif() endif()
message(STATUS "") message(STATUS "")
message(STATUS "Library base name: ${mi_basename}") message(STATUS "Library name : ${mi_libname}")
message(STATUS "Version : ${mi_version}") message(STATUS "Version : ${mi_version}.${mi_version_patch}")
message(STATUS "Build type : ${CMAKE_BUILD_TYPE_LC}") message(STATUS "Build type : ${CMAKE_BUILD_TYPE_LC}")
if(MI_USE_CXX) if(MI_USE_CXX)
message(STATUS "C++ Compiler : ${CMAKE_CXX_COMPILER}") message(STATUS "C++ Compiler : ${CMAKE_CXX_COMPILER}")
@ -451,7 +571,7 @@ message(STATUS "")
# shared library # shared library
if(MI_BUILD_SHARED) if(MI_BUILD_SHARED)
add_library(mimalloc SHARED ${mi_sources}) add_library(mimalloc SHARED ${mi_sources})
set_target_properties(mimalloc PROPERTIES VERSION ${mi_version} SOVERSION ${mi_version_major} OUTPUT_NAME ${mi_basename} ) set_target_properties(mimalloc PROPERTIES VERSION ${mi_version} SOVERSION ${mi_version_major} OUTPUT_NAME ${mi_libname} )
target_compile_definitions(mimalloc PRIVATE ${mi_defines} MI_SHARED_LIB MI_SHARED_LIB_EXPORT) target_compile_definitions(mimalloc PRIVATE ${mi_defines} MI_SHARED_LIB MI_SHARED_LIB_EXPORT)
target_compile_options(mimalloc PRIVATE ${mi_cflags} ${mi_cflags_dynamic}) target_compile_options(mimalloc PRIVATE ${mi_cflags} ${mi_cflags_dynamic})
target_link_libraries(mimalloc PRIVATE ${mi_libraries}) target_link_libraries(mimalloc PRIVATE ${mi_libraries})
@ -459,28 +579,47 @@ if(MI_BUILD_SHARED)
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${mi_install_incdir}> $<INSTALL_INTERFACE:${mi_install_incdir}>
) )
install(TARGETS mimalloc EXPORT mimalloc ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(EXPORT mimalloc DESTINATION ${mi_install_cmakedir})
if(WIN32)
# On windows, the import library name for the dll would clash with the static mimalloc.lib library
# so we postfix the dll import library with `.dll.lib` (and also the .pdb debug file)
set_property(TARGET mimalloc PROPERTY ARCHIVE_OUTPUT_NAME "${mi_libname}.dll" )
install(FILES "$<TARGET_FILE_DIR:mimalloc>/${mi_libname}.dll.lib" DESTINATION ${CMAKE_INSTALL_LIBDIR})
set_property(TARGET mimalloc PROPERTY PDB_NAME "${mi_libname}.dll")
# don't try to install the pdb since it may not be generated depending on the configuration
# install(FILES "$<TARGET_FILE_DIR:mimalloc>/${mi_libname}.dll.pdb" DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
if(WIN32 AND MI_WIN_REDIRECT) if(WIN32 AND MI_WIN_REDIRECT)
# On windows, link and copy the mimalloc redirection dll too. # On windows, link and copy the mimalloc redirection dll too.
if(CMAKE_SIZEOF_VOID_P EQUAL 4) if(CMAKE_GENERATOR_PLATFORM STREQUAL "arm64ec")
set(MIMALLOC_REDIRECT_SUFFIX "-arm64ec")
elseif(MI_ARCH STREQUAL "x64")
set(MIMALLOC_REDIRECT_SUFFIX "")
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
message(STATUS "Note: x64 code emulated on Windows for arm64 should use an arm64ec build of 'mimalloc.dll'")
message(STATUS " together with 'mimalloc-redirect-arm64ec.dll'. See the 'bin\\readme.md' for more information.")
endif()
elseif(MI_ARCH STREQUAL "x86")
set(MIMALLOC_REDIRECT_SUFFIX "32") set(MIMALLOC_REDIRECT_SUFFIX "32")
else() else()
set(MIMALLOC_REDIRECT_SUFFIX "") set(MIMALLOC_REDIRECT_SUFFIX "-${MI_ARCH}") # -arm64 etc.
endif() endif()
target_link_libraries(mimalloc PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/bin/mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.lib) target_link_libraries(mimalloc PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/bin/mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.lib) # the DLL import library
add_custom_command(TARGET mimalloc POST_BUILD add_custom_command(TARGET mimalloc POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/bin/mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.dll" $<TARGET_FILE_DIR:mimalloc> COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}/bin/mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.dll" $<TARGET_FILE_DIR:mimalloc>
COMMENT "Copy mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.dll to output directory") COMMENT "Copy mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.dll to output directory")
install(FILES "$<TARGET_FILE_DIR:mimalloc>/mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.dll" DESTINATION ${mi_install_bindir}) install(FILES "$<TARGET_FILE_DIR:mimalloc>/mimalloc-redirect${MIMALLOC_REDIRECT_SUFFIX}.dll" DESTINATION ${CMAKE_INSTALL_BINDIR})
endif() endif()
install(TARGETS mimalloc EXPORT mimalloc ARCHIVE DESTINATION ${mi_install_libdir} RUNTIME DESTINATION ${mi_install_bindir} LIBRARY DESTINATION ${mi_install_libdir})
install(EXPORT mimalloc DESTINATION ${mi_install_cmakedir})
endif() endif()
# static library # static library
if (MI_BUILD_STATIC) if (MI_BUILD_STATIC)
add_library(mimalloc-static STATIC ${mi_sources}) add_library(mimalloc-static STATIC ${mi_sources})
set_property(TARGET mimalloc-static PROPERTY OUTPUT_NAME ${mi_libname})
set_property(TARGET mimalloc-static PROPERTY POSITION_INDEPENDENT_CODE ON) set_property(TARGET mimalloc-static PROPERTY POSITION_INDEPENDENT_CODE ON)
target_compile_definitions(mimalloc-static PRIVATE ${mi_defines} MI_STATIC_LIB) target_compile_definitions(mimalloc-static PRIVATE ${mi_defines} MI_STATIC_LIB)
target_compile_options(mimalloc-static PRIVATE ${mi_cflags} ${mi_cflags_static}) target_compile_options(mimalloc-static PRIVATE ${mi_cflags} ${mi_cflags_static})
@ -489,15 +628,6 @@ if (MI_BUILD_STATIC)
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${mi_install_incdir}> $<INSTALL_INTERFACE:${mi_install_incdir}>
) )
if(WIN32)
# When building both static and shared libraries on Windows, a static library should use a
# different output name to avoid the conflict with the import library of a shared one.
string(REPLACE "mimalloc" "mimalloc-static" mi_output_name ${mi_basename})
set_target_properties(mimalloc-static PROPERTIES OUTPUT_NAME ${mi_output_name})
else()
set_target_properties(mimalloc-static PROPERTIES OUTPUT_NAME ${mi_basename})
endif()
install(TARGETS mimalloc-static EXPORT mimalloc DESTINATION ${mi_install_objdir} LIBRARY) install(TARGETS mimalloc-static EXPORT mimalloc DESTINATION ${mi_install_objdir} LIBRARY)
install(EXPORT mimalloc DESTINATION ${mi_install_cmakedir}) install(EXPORT mimalloc DESTINATION ${mi_install_cmakedir})
endif() endif()
@ -506,6 +636,7 @@ endif()
install(FILES include/mimalloc.h DESTINATION ${mi_install_incdir}) install(FILES include/mimalloc.h DESTINATION ${mi_install_incdir})
install(FILES include/mimalloc-override.h DESTINATION ${mi_install_incdir}) install(FILES include/mimalloc-override.h DESTINATION ${mi_install_incdir})
install(FILES include/mimalloc-new-delete.h DESTINATION ${mi_install_incdir}) install(FILES include/mimalloc-new-delete.h DESTINATION ${mi_install_incdir})
install(FILES include/mimalloc-stats.h DESTINATION ${mi_install_incdir})
install(FILES cmake/mimalloc-config.cmake DESTINATION ${mi_install_cmakedir}) install(FILES cmake/mimalloc-config.cmake DESTINATION ${mi_install_cmakedir})
install(FILES cmake/mimalloc-config-version.cmake DESTINATION ${mi_install_cmakedir}) install(FILES cmake/mimalloc-config-version.cmake DESTINATION ${mi_install_cmakedir})
@ -522,12 +653,15 @@ if (MI_BUILD_OBJECT)
) )
# Copy the generated object file (`static.o`) to the output directory (as `mimalloc.o`) # Copy the generated object file (`static.o`) to the output directory (as `mimalloc.o`)
if(NOT WIN32) if(CMAKE_GENERATOR MATCHES "^Visual Studio.*$")
set(mimalloc-obj-static "${CMAKE_CURRENT_BINARY_DIR}/mimalloc-obj.dir/$<CONFIG>/static${CMAKE_C_OUTPUT_EXTENSION}")
else()
set(mimalloc-obj-static "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/mimalloc-obj.dir/src/static.c${CMAKE_C_OUTPUT_EXTENSION}") set(mimalloc-obj-static "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/mimalloc-obj.dir/src/static.c${CMAKE_C_OUTPUT_EXTENSION}")
set(mimalloc-obj-out "${CMAKE_CURRENT_BINARY_DIR}/${mi_basename}${CMAKE_C_OUTPUT_EXTENSION}")
add_custom_command(OUTPUT ${mimalloc-obj-out} DEPENDS mimalloc-obj COMMAND "${CMAKE_COMMAND}" -E copy "${mimalloc-obj-static}" "${mimalloc-obj-out}")
add_custom_target(mimalloc-obj-target ALL DEPENDS ${mimalloc-obj-out})
endif() endif()
set(mimalloc-obj-out "${CMAKE_CURRENT_BINARY_DIR}/${mi_libname}${CMAKE_C_OUTPUT_EXTENSION}")
add_custom_command(OUTPUT ${mimalloc-obj-out} DEPENDS mimalloc-obj COMMAND "${CMAKE_COMMAND}" -E copy "${mimalloc-obj-static}" "${mimalloc-obj-out}")
add_custom_target(mimalloc-obj-target ALL DEPENDS ${mimalloc-obj-out})
# the following seems to lead to cmake warnings/errors on some systems, disable for now :-( # the following seems to lead to cmake warnings/errors on some systems, disable for now :-(
# install(TARGETS mimalloc-obj EXPORT mimalloc DESTINATION ${mi_install_objdir}) # install(TARGETS mimalloc-obj EXPORT mimalloc DESTINATION ${mi_install_objdir})
@ -536,22 +670,23 @@ if (MI_BUILD_OBJECT)
# but that fails cmake versions less than 3.10 so we leave it as is for now # but that fails cmake versions less than 3.10 so we leave it as is for now
install(FILES ${mimalloc-obj-static} install(FILES ${mimalloc-obj-static}
DESTINATION ${mi_install_objdir} DESTINATION ${mi_install_objdir}
RENAME ${mi_basename}${CMAKE_C_OUTPUT_EXTENSION} ) RENAME ${mi_libname}${CMAKE_C_OUTPUT_EXTENSION} )
endif() endif()
# pkg-config file support # pkg-config file support
set(pc_libraries "") set(mi_pc_libraries "")
foreach(item IN LISTS mi_libraries) foreach(item IN LISTS mi_libraries)
if(item MATCHES " *[-].*") if(item MATCHES " *[-].*")
set(pc_libraries "${pc_libraries} ${item}") set(mi_pc_libraries "${mi_pc_libraries} ${item}")
else() else()
set(pc_libraries "${pc_libraries} -l${item}") set(mi_pc_libraries "${mi_pc_libraries} -l${item}")
endif() endif()
endforeach() endforeach()
include("cmake/JoinPaths.cmake") include("cmake/JoinPaths.cmake")
join_paths(includedir_for_pc_file "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") join_paths(mi_pc_includedir "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}")
join_paths(libdir_for_pc_file "\${prefix}" "${CMAKE_INSTALL_LIBDIR}") join_paths(mi_pc_libdir "\${prefix}" "${CMAKE_INSTALL_LIBDIR}")
configure_file(mimalloc.pc.in mimalloc.pc @ONLY) configure_file(mimalloc.pc.in mimalloc.pc @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/mimalloc.pc" install(FILES "${CMAKE_CURRENT_BINARY_DIR}/mimalloc.pc"
@ -566,15 +701,41 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/mimalloc.pc"
if (MI_BUILD_TESTS) if (MI_BUILD_TESTS)
enable_testing() enable_testing()
# static link tests
foreach(TEST_NAME api api-fill stress) foreach(TEST_NAME api api-fill stress)
add_executable(mimalloc-test-${TEST_NAME} test/test-${TEST_NAME}.c) add_executable(mimalloc-test-${TEST_NAME} test/test-${TEST_NAME}.c)
target_compile_definitions(mimalloc-test-${TEST_NAME} PRIVATE ${mi_defines}) target_compile_definitions(mimalloc-test-${TEST_NAME} PRIVATE ${mi_defines})
target_compile_options(mimalloc-test-${TEST_NAME} PRIVATE ${mi_cflags}) target_compile_options(mimalloc-test-${TEST_NAME} PRIVATE ${mi_cflags})
target_include_directories(mimalloc-test-${TEST_NAME} PRIVATE include) target_include_directories(mimalloc-test-${TEST_NAME} PRIVATE include)
target_link_libraries(mimalloc-test-${TEST_NAME} PRIVATE mimalloc ${mi_libraries}) if(MI_BUILD_SHARED AND (MI_TRACK_ASAN OR MI_DEBUG_TSAN OR MI_DEBUG_UBSAN))
target_link_libraries(mimalloc-test-${TEST_NAME} PRIVATE mimalloc ${mi_libraries})
else()
target_link_libraries(mimalloc-test-${TEST_NAME} PRIVATE mimalloc-static ${mi_libraries})
endif()
add_test(NAME test-${TEST_NAME} COMMAND mimalloc-test-${TEST_NAME}) add_test(NAME test-${TEST_NAME} COMMAND mimalloc-test-${TEST_NAME})
endforeach() endforeach()
# dynamic override test
if(MI_BUILD_SHARED AND NOT (MI_TRACK_ASAN OR MI_DEBUG_TSAN OR MI_DEBUG_UBSAN))
add_executable(mimalloc-test-stress-dynamic test/test-stress.c)
target_compile_definitions(mimalloc-test-stress-dynamic PRIVATE ${mi_defines} "USE_STD_MALLOC=1")
if(WIN32)
target_compile_definitions(mimalloc-test-stress-dynamic PRIVATE "MI_LINK_VERSION=1")
endif()
target_compile_options(mimalloc-test-stress-dynamic PRIVATE ${mi_cflags})
target_include_directories(mimalloc-test-stress-dynamic PRIVATE include)
target_link_libraries(mimalloc-test-stress-dynamic PRIVATE mimalloc ${mi_libraries}) # mi_version
if(WIN32)
add_test(NAME test-stress-dynamic COMMAND ${CMAKE_COMMAND} -E env MIMALLOC_SHOW_STATS=1 $<TARGET_FILE:mimalloc-test-stress-dynamic>)
else()
if(APPLE)
set(LD_PRELOAD "DYLD_INSERT_LIBRARIES")
else()
set(LD_PRELOAD "LD_PRELOAD")
endif()
add_test(NAME test-stress-dynamic COMMAND ${CMAKE_COMMAND} -E env MIMALLOC_SHOW_STATS=1 ${LD_PRELOAD}=$<TARGET_FILE:mimalloc> $<TARGET_FILE:mimalloc-test-stress-dynamic>)
endif()
endif()
endif() endif()
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------

View file

@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2018-2021 Microsoft Corporation, Daan Leijen Copyright (c) 2018-2025 Microsoft Corporation, Daan Leijen
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View file

@ -8,14 +8,15 @@ trigger:
include: include:
- master - master
- dev - dev
- dev-slice - dev2
- dev3
tags: tags:
include: include:
- v* - v*
jobs: jobs:
- job: - job:
displayName: Windows displayName: Windows 2022
pool: pool:
vmImage: vmImage:
windows-2022 windows-2022
@ -43,7 +44,7 @@ jobs:
solution: $(BuildType)/libmimalloc.sln solution: $(BuildType)/libmimalloc.sln
configuration: '$(MSBuildConfiguration)' configuration: '$(MSBuildConfiguration)'
msbuildArguments: -m msbuildArguments: -m
- script: ctest --verbose --timeout 120 -C $(MSBuildConfiguration) - script: ctest --verbose --timeout 240 -C $(MSBuildConfiguration)
workingDirectory: $(BuildType) workingDirectory: $(BuildType)
displayName: CTest displayName: CTest
#- script: $(BuildType)\$(BuildType)\mimalloc-test-stress #- script: $(BuildType)\$(BuildType)\mimalloc-test-stress
@ -52,7 +53,7 @@ jobs:
# artifact: mimalloc-windows-$(BuildType) # artifact: mimalloc-windows-$(BuildType)
- job: - job:
displayName: Linux displayName: Ubuntu 22.04
pool: pool:
vmImage: vmImage:
ubuntu-22.04 ubuntu-22.04
@ -112,8 +113,13 @@ jobs:
CC: clang CC: clang
CXX: clang++ CXX: clang++
BuildType: debug-tsan-clang-cxx BuildType: debug-tsan-clang-cxx
cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Debug -DMI_USE_CXX=ON -DMI_DEBUG_TSAN=ON cmakeExtraArgs: -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMI_USE_CXX=ON -DMI_DEBUG_TSAN=ON
Debug Guarded Clang:
CC: clang
CXX: clang
BuildType: debug-guarded-clang
cmakeExtraArgs: -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMI_DEBUG_FULL=ON -DMI_GUARDED=ON
steps: steps:
- task: CMake@1 - task: CMake@1
inputs: inputs:
@ -121,17 +127,19 @@ jobs:
cmakeArgs: .. $(cmakeExtraArgs) cmakeArgs: .. $(cmakeExtraArgs)
- script: make -j$(nproc) -C $(BuildType) - script: make -j$(nproc) -C $(BuildType)
displayName: Make displayName: Make
- script: ctest --verbose --timeout 180 - script: ctest --verbose --timeout 240
workingDirectory: $(BuildType) workingDirectory: $(BuildType)
displayName: CTest displayName: CTest
env:
MIMALLOC_GUARDED_SAMPLE_RATE: 1000
# - upload: $(Build.SourcesDirectory)/$(BuildType) # - upload: $(Build.SourcesDirectory)/$(BuildType)
# artifact: mimalloc-ubuntu-$(BuildType) # artifact: mimalloc-ubuntu-$(BuildType)
- job: - job:
displayName: macOS displayName: macOS 14 (Sonoma)
pool: pool:
vmImage: vmImage:
macOS-latest macOS-14
strategy: strategy:
matrix: matrix:
Debug: Debug:
@ -150,48 +158,109 @@ jobs:
cmakeArgs: .. $(cmakeExtraArgs) cmakeArgs: .. $(cmakeExtraArgs)
- script: make -j$(sysctl -n hw.ncpu) -C $(BuildType) - script: make -j$(sysctl -n hw.ncpu) -C $(BuildType)
displayName: Make displayName: Make
# - script: MIMALLOC_VERBOSE=1 ./mimalloc-test-api - script: ctest --verbose --timeout 240
# workingDirectory: $(BuildType)
# displayName: TestAPI
# - script: MIMALLOC_VERBOSE=1 ./mimalloc-test-stress
# workingDirectory: $(BuildType)
# displayName: TestStress
- script: ctest --verbose --timeout 120
workingDirectory: $(BuildType) workingDirectory: $(BuildType)
displayName: CTest displayName: CTest
# - upload: $(Build.SourcesDirectory)/$(BuildType) # - upload: $(Build.SourcesDirectory)/$(BuildType)
# artifact: mimalloc-macos-$(BuildType) # artifact: mimalloc-macos-$(BuildType)
# - job: # ----------------------------------------------------------
# displayName: Windows-2017 # Other OS versions (just debug mode)
# pool: # ----------------------------------------------------------
# vmImage:
# vs2017-win2016 - job:
# strategy: displayName: Windows 2019
# matrix: pool:
# Debug: vmImage:
# BuildType: debug windows-2019
# cmakeExtraArgs: -A x64 -DCMAKE_BUILD_TYPE=Debug -DMI_DEBUG_FULL=ON strategy:
# MSBuildConfiguration: Debug matrix:
# Release: Debug:
# BuildType: release BuildType: debug
# cmakeExtraArgs: -A x64 -DCMAKE_BUILD_TYPE=Release cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Debug -DMI_DEBUG_FULL=ON
# MSBuildConfiguration: Release MSBuildConfiguration: Debug
# Secure: Release:
# BuildType: secure BuildType: release
# cmakeExtraArgs: -A x64 -DCMAKE_BUILD_TYPE=Release -DMI_SECURE=ON cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Release
# MSBuildConfiguration: Release MSBuildConfiguration: Release
# steps: steps:
# - task: CMake@1 - task: CMake@1
# inputs: inputs:
# workingDirectory: $(BuildType) workingDirectory: $(BuildType)
# cmakeArgs: .. $(cmakeExtraArgs) cmakeArgs: .. $(cmakeExtraArgs)
# - task: MSBuild@1 - task: MSBuild@1
# inputs: inputs:
# solution: $(BuildType)/libmimalloc.sln solution: $(BuildType)/libmimalloc.sln
# configuration: '$(MSBuildConfiguration)' configuration: '$(MSBuildConfiguration)'
# - script: | msbuildArguments: -m
# cd $(BuildType) - script: ctest --verbose --timeout 240 -C $(MSBuildConfiguration)
# ctest --verbose --timeout 120 workingDirectory: $(BuildType)
# displayName: CTest displayName: CTest
- job:
displayName: Ubuntu 24.04
pool:
vmImage:
ubuntu-24.04
strategy:
matrix:
Debug:
CC: gcc
CXX: g++
BuildType: debug
cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Debug -DMI_DEBUG_FULL=ON
Debug++:
CC: gcc
CXX: g++
BuildType: debug-cxx
cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Debug -DMI_DEBUG_FULL=ON -DMI_USE_CXX=ON
Debug Clang:
CC: clang
CXX: clang++
BuildType: debug-clang
cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Debug -DMI_DEBUG_FULL=ON
Debug++ Clang:
CC: clang
CXX: clang++
BuildType: debug-clang-cxx
cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Debug -DMI_DEBUG_FULL=ON -DMI_USE_CXX=ON
Release Clang:
CC: clang
CXX: clang++
BuildType: release-clang
cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Release
steps:
- task: CMake@1
inputs:
workingDirectory: $(BuildType)
cmakeArgs: .. $(cmakeExtraArgs)
- script: make -j$(nproc) -C $(BuildType)
displayName: Make
- script: ctest --verbose --timeout 240
workingDirectory: $(BuildType)
displayName: CTest
- job:
displayName: macOS 15 (Sequoia)
pool:
vmImage:
macOS-15
strategy:
matrix:
Debug:
BuildType: debug
cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Debug -DMI_DEBUG_FULL=ON
Release:
BuildType: release
cmakeExtraArgs: -DCMAKE_BUILD_TYPE=Release
steps:
- task: CMake@1
inputs:
workingDirectory: $(BuildType)
cmakeArgs: .. $(cmakeExtraArgs)
- script: make -j$(sysctl -n hw.ncpu) -C $(BuildType)
displayName: Make
- script: ctest --verbose --timeout 240
workingDirectory: $(BuildType)
displayName: CTest

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
bin/minject-arm64.exe Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,27 +1,46 @@
# Windows Override # Windows Override
<span id="override_on_windows">Dynamically overriding on mimalloc on Windows</span> <span id="override_on_windows">We use a separate redirection DLL to override mimalloc on Windows</span>
is robust and has the particular advantage to be able to redirect all malloc/free calls that go through such that we redirect all malloc/free calls that go through the (dynamic) C runtime allocator,
the (dynamic) C runtime allocator, including those from other DLL's or libraries. including those from other DLL's or libraries. As it intercepts all allocation calls on a low level,
As it intercepts all allocation calls on a low level, it can be used reliably it can be used on large programs that include other 3rd party components.
on large programs that include other 3rd party components. There are four requirements to make the overriding work well:
There are four requirements to make the overriding work robustly:
1. Use the C-runtime library as a DLL (using the `/MD` or `/MDd` switch). 1. Use the C-runtime library as a DLL (using the `/MD` or `/MDd` switch).
2. Link your program explicitly with `mimalloc-override.dll` library. 2. Link your program explicitly with the `mimalloc.dll.lib` export library for
To ensure the `mimalloc-override.dll` is loaded at run-time it is easiest to insert some the `mimalloc.dll` -- which contains all mimalloc functionality.
call to the mimalloc API in the `main` function, like `mi_version()` To ensure the `mimalloc.dll` is actually loaded at run-time it is easiest
(or use the `/INCLUDE:mi_version` switch on the linker). See the `mimalloc-override-test` project to insert some call to the mimalloc API in the `main` function, like `mi_version()`
for an example on how to use this. (or use the `/include:mi_version` switch on the linker, or
similarly, `#pragma comment(linker, "/include:mi_version")` in some source file).
See the `mimalloc-test-override` project for an example on how to use this.
3. The `mimalloc-redirect.dll` (or `mimalloc-redirect32.dll`) must be put 3. The `mimalloc-redirect.dll` must be put in the same folder as the main
in the same folder as the main `mimalloc-override.dll` at runtime (as it is a dependency of that DLL). `mimalloc.dll` at runtime (as it is a dependency of that DLL).
The redirection DLL ensures that all calls to the C runtime malloc API get redirected to The redirection DLL ensures that all calls to the C runtime malloc API get
mimalloc functions (which reside in `mimalloc-override.dll`). redirected to mimalloc functions (which reside in `mimalloc.dll`).
4. Ensure the `mimalloc-override.dll` comes as early as possible in the import 4. Ensure the `mimalloc.dll` comes as early as possible in the import
list of the final executable (so it can intercept all potential allocations). list of the final executable (so it can intercept all potential allocations).
You can use `minject -l <exe>` to check this if needed.
```csharp
┌──────────────┐
│ Your Program │
└────┬─────────┘
│ mi_version() ┌───────────────┐ ┌───────────────────────┐
├──────────────►│ mimalloc.dll ├────►│ mimalloc-redirect.dll │
│ └──────┬────────┘ └───────────────────────┘
│ ▼
│ malloc() etc. ┌──────────────┐
├──────────────►│ ucrtbase.dll │
│ └──────────────┘
└──────────────► ...
```
For best performance on Windows with C++, it For best performance on Windows with C++, it
is also recommended to also override the `new`/`delete` operations (by including is also recommended to also override the `new`/`delete` operations (by including
@ -29,18 +48,43 @@ is also recommended to also override the `new`/`delete` operations (by including
a single(!) source file in your project). a single(!) source file in your project).
The environment variable `MIMALLOC_DISABLE_REDIRECT=1` can be used to disable dynamic The environment variable `MIMALLOC_DISABLE_REDIRECT=1` can be used to disable dynamic
overriding at run-time. Use `MIMALLOC_VERBOSE=1` to check if mimalloc was successfully redirected. overriding at run-time. Use `MIMALLOC_VERBOSE=1` to check if mimalloc was successfully
redirected.
## Minject ### Other Platforms
We cannot always re-link an executable with `mimalloc-override.dll`, and similarly, we cannot always You always link with `mimalloc.dll` but for different platforms you may
ensure the the DLL comes first in the import table of the final executable. need a specific redirection DLL:
- __x64__: `mimalloc-redirect.dll`.
- __x86__: `mimalloc-redirect32.dll`. Use for older 32-bit Windows programs.
- __arm64__: `mimalloc-redirect-arm64.dll`. Use for native Windows arm64 programs.
- __arm64ec__: `mimalloc-redirect-arm64ec.dll`. The [arm64ec] ABI is "emulation compatible"
mode on Windows arm64. Unfortunately we cannot run x64 code emulated on Windows arm64 with
the x64 mimalloc override directly (since the C runtime always uses `arm64ec`). Instead:
1. Build the program as normal for x64 and link as normal with the x64
`mimalloc.lib` export library.
2. Now separately build `mimalloc.dll` in `arm64ec` mode and _overwrite_ your
previous (x64) `mimalloc.dll` -- the loader can handle the mix of arm64ec
and x64 code. Now use `mimalloc-redirect-arm64ec.dll` to match your new
arm64ec `mimalloc.dll`. The main program stays as is and can be fully x64
or contain more arm64ec modules. At runtime, the arm64ec `mimalloc.dll` will
run with native arm64 instructions while the rest of the program runs emulated x64.
[arm64ec]: https://learn.microsoft.com/en-us/windows/arm/arm64ec
### Minject
We cannot always re-link an executable with `mimalloc.dll`, and similarly, we
cannot always ensure that the DLL comes first in the import table of the final executable.
In many cases though we can patch existing executables without any recompilation In many cases though we can patch existing executables without any recompilation
if they are linked with the dynamic C runtime (`ucrtbase.dll`) -- just put the `mimalloc-override.dll` if they are linked with the dynamic C runtime (`ucrtbase.dll`) -- just put the
into the import table (and put `mimalloc-redirect.dll` in the same folder) `mimalloc.dll` into the import table (and put `mimalloc-redirect.dll` in the same
Such patching can be done for example with [CFF Explorer](https://ntcore.com/?page_id=388). directory) Such patching can be done for example with [CFF Explorer](https://ntcore.com/?page_id=388).
The `minject` program can also do this from the command line, use `minject --help` for options: The `minject` program can also do this from the command line
Use `minject --help` for options:
``` ```
> minject --help > minject --help
@ -58,8 +102,8 @@ options:
-l --list only list imported modules -l --list only list imported modules
-i --inplace update the exe in-place (make sure there is a backup!) -i --inplace update the exe in-place (make sure there is a backup!)
-f --force always overwrite without prompting -f --force always overwrite without prompting
--postfix=<p> use <p> as a postfix to the mimalloc dll (default is 'override') --postfix=<p> use <p> as a postfix to the mimalloc dll.
e.g. use --postfix=override-debug to link with mimalloc-override-debug.dll e.g. use --postfix=debug to link with mimalloc-debug.dll
notes: notes:
Without '--inplace' an injected <exe> is generated with the same name ending in '-mi'. Without '--inplace' an injected <exe> is generated with the same name ending in '-mi'.
@ -69,3 +113,6 @@ examples:
> minject --list myprogram.exe > minject --list myprogram.exe
> minject --force --inplace myprogram.exe > minject --force --inplace myprogram.exe
``` ```
For x86 32-bit binaries, use `minject32`, and for arm64 binaries use `minject-arm64`.

View file

@ -1,6 +1,6 @@
set(mi_version_major 2) set(mi_version_major 2)
set(mi_version_minor 1) set(mi_version_minor 2)
set(mi_version_patch 7) set(mi_version_patch 2)
set(mi_version ${mi_version_major}.${mi_version_minor}) set(mi_version ${mi_version_major}.${mi_version_minor})
set(PACKAGE_VERSION ${mi_version}) set(PACKAGE_VERSION ${mi_version})

View file

@ -1,10 +1,10 @@
# install from an image # install from an image
# download first an appropiate tar.gz image into the current directory # download first an appropriate tar.gz image into the current directory
# from: <https://github.com/alpinelinux/docker-alpine/tree/edge/armv7> # from: <https://github.com/alpinelinux/docker-alpine/tree/edge/armv7>
FROM scratch FROM scratch
# Substitute the image name that was downloaded # Substitute the image name that was downloaded
ADD alpine-minirootfs-20240329-armv7.tar.gz / ADD alpine-minirootfs-20240329-armv7.tar.gz /
# Install tools # Install tools
RUN apk add build-base make cmake RUN apk add build-base make cmake
@ -15,7 +15,7 @@ RUN mkdir -p /home/dev
WORKDIR /home/dev WORKDIR /home/dev
# Get mimalloc # Get mimalloc
RUN git clone https://github.com/microsoft/mimalloc -b dev-slice RUN git clone https://github.com/microsoft/mimalloc -b dev2
RUN mkdir -p mimalloc/out/release RUN mkdir -p mimalloc/out/release
RUN mkdir -p mimalloc/out/debug RUN mkdir -p mimalloc/out/debug

View file

@ -10,7 +10,7 @@ RUN mkdir -p /home/dev
WORKDIR /home/dev WORKDIR /home/dev
# Get mimalloc # Get mimalloc
RUN git clone https://github.com/microsoft/mimalloc -b dev-slice RUN git clone https://github.com/microsoft/mimalloc -b dev2
RUN mkdir -p mimalloc/out/release RUN mkdir -p mimalloc/out/release
RUN mkdir -p mimalloc/out/debug RUN mkdir -p mimalloc/out/debug

View file

@ -10,7 +10,7 @@ RUN mkdir -p /home/dev
WORKDIR /home/dev WORKDIR /home/dev
# Get mimalloc # Get mimalloc
RUN git clone https://github.com/microsoft/mimalloc -b dev-slice RUN git clone https://github.com/microsoft/mimalloc -b dev2
RUN mkdir -p mimalloc/out/release RUN mkdir -p mimalloc/out/release
RUN mkdir -p mimalloc/out/debug RUN mkdir -p mimalloc/out/debug

View file

@ -0,0 +1,63 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO microsoft/mimalloc
HEAD_REF master
# The "REF" can be a commit hash, branch name (dev2), or a version (v2.2.1).
# REF "v${VERSION}"
REF e2db21e9ba9fb9172b7b0aa0fe9b8742525e8774
# The sha512 is the hash of the tar.gz bundle.
# (To get the sha512, run `vcpkg install mimalloc[override] --overlay-ports=<dir of this file>` and copy the sha from the error message.)
SHA512 8cbb601fdf8b46dd6a9c0d314d6da9d4960699853829e96d2470753867f90689fb4caeaf30d628943fd388670dc11902dbecc9cc7c329b99a510524a09bdb612
)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
c MI_NO_USE_CXX
guarded MI_GUARDED
secure MI_SECURE
override MI_OVERRIDE
optarch MI_OPT_ARCH
optsimd MI_OPT_SIMD
xmalloc MI_XMALLOC
asm MI_SEE_ASM
)
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" MI_BUILD_STATIC)
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" MI_BUILD_SHARED)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
-DMI_USE_CXX=ON
-DMI_BUILD_TESTS=OFF
-DMI_BUILD_OBJECT=ON
-DMI_BUILD_STATIC=${MI_BUILD_STATIC}
-DMI_BUILD_SHARED=${MI_BUILD_SHARED}
-DMI_INSTALL_TOPLEVEL=ON
${FEATURE_OPTIONS}
)
vcpkg_cmake_install()
vcpkg_copy_pdbs()
file(COPY
"${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake"
"${CMAKE_CURRENT_LIST_DIR}/usage"
DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}"
)
vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/mimalloc)
if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
# todo: why is this needed?
vcpkg_replace_string(
"${CURRENT_PACKAGES_DIR}/include/mimalloc.h"
"!defined(MI_SHARED_LIB)"
"0 // !defined(MI_SHARED_LIB)"
)
endif()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
vcpkg_fixup_pkgconfig()
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")

40
contrib/vcpkg/readme.md Normal file
View file

@ -0,0 +1,40 @@
# Vcpkg support
This directory is meant to provide the sources for the official [vcpkg port]
of mimalloc, but can also be used to override the official port with
your own variant.
For example, you can edit the [`portfile.cmake`](portfile.cmake)
to check out a specific commit, version, or branch of mimalloc, or set further options.
You can install such custom port as:
```sh
$ vcpkg install "mimalloc[override]" --recurse --overlay-ports=./contrib/vcpkg
```
This will also show the correct sha512 hash if you use a custom version.
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.
See also the vcpkg [documentation](https://learn.microsoft.com/en-us/vcpkg/produce/update-package-version) for more information.
# Using mimalloc from vcpkg
When using [cmake with vcpkg](https://learn.microsoft.com/en-us/vcpkg/get_started/get-started?pivots=shell-powershell),
you can use mimalloc from the `CMakeLists.txt` as:
```cmake
find_package(mimalloc CONFIG REQUIRED)
target_link_libraries(main PRIVATE mimalloc)
```
See [`test/CMakeLists.txt](../../test/CMakeLists.txt) for more examples.
# Acknowledgements
The original port for vckpg was contributed by many people, including: @vicroms, @myd7349, @PhoubeHui, @LilyWangL,
@JonLiu1993, @RT2Code, Remy Tassoux, @wangao, @BillyONeal, @jiayuehua, @dg0yt, @gerar-ryan-immersaview, @nickdademo,
and @jimwang118 -- Thank you so much!
[vcpkg port]: https://github.com/microsoft/vcpkg/tree/master/ports/mimalloc

20
contrib/vcpkg/usage Normal file
View file

@ -0,0 +1,20 @@
Use the following CMake targets to import mimalloc:
find_package(mimalloc CONFIG REQUIRED)
target_link_libraries(main PRIVATE mimalloc)
And use mimalloc in your sources as:
#include <mimalloc.h>
#include <stdio.h>
int main(int argc, char** argv) {
int* p = mi_malloc_tp(int);
*p = mi_version();
printf("mimalloc version: %d\n", *p);
mi_free(p);
return 0;
}
When dynamically overriding on Windows, ensure `mimalloc.dll` is linked through some call to
mimalloc (e.g. `mi_version()`), and that the `mimalloc-redirect.dll` is in the same directory.
See https://github.com/microsoft/mimalloc/blob/dev/bin/readme.md for detailed information.

View file

@ -0,0 +1,20 @@
_find_package(${ARGS})
if(CMAKE_CURRENT_LIST_DIR STREQUAL "${MIMALLOC_CMAKE_DIR}/${MIMALLOC_VERSION_DIR}")
set(MIMALLOC_INCLUDE_DIR "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include")
# As in vcpkg.cmake
if(NOT DEFINED CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE MATCHES "^[Dd][Ee][Bb][Uu][Gg]$")
set(MIMALLOC_LIBRARY_DIR "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib")
else()
set(MIMALLOC_LIBRARY_DIR "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib")
endif()
set(MIMALLOC_OBJECT_DIR "${MIMALLOC_LIBRARY_DIR}")
set(MIMALLOC_TARGET_DIR "${MIMALLOC_LIBRARY_DIR}")
endif()
# vcpkg always configures either a static or dynamic library.
# ensure to always expose the mimalloc target as either the static or dynamic build.
if(TARGET mimalloc-static AND NOT TARGET mimalloc)
add_library(mimalloc INTERFACE IMPORTED)
set_target_properties(mimalloc PROPERTIES INTERFACE_LINK_LIBRARIES mimalloc-static)
endif()

45
contrib/vcpkg/vcpkg.json Normal file
View file

@ -0,0 +1,45 @@
{
"name": "mimalloc",
"version": "2.2.2",
"port-version": 1,
"description": "Compact general purpose allocator with excellent performance",
"homepage": "https://github.com/microsoft/mimalloc",
"license": "MIT",
"supports": "!uwp",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
],
"features": {
"c": {
"description": "Use C11 compilation (this can still override new/delete)"
},
"override": {
"description": "Override the standard malloc/free interface"
},
"secure": {
"description": "Use full security mitigations (like guard pages and randomization)"
},
"guarded": {
"description": "Use build that support guard pages after objects controlled with MIMALLOC_GUARDED_SAMPLE_RATE"
},
"xmalloc": {
"description": "If out-of-memory, call abort() instead of returning NULL"
},
"optarch": {
"description": "Use architecture specific optimizations (on x64: '-march=haswell;-mavx2', on arm64: '-march=armv8.1-a')"
},
"optsimd": {
"description": "Allow use of SIMD instructions (avx2 or neon) (requires 'optarch' to be enabled)"
},
"asm": {
"description": "Generate assembly files"
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
/* ---------------------------------------------------------------------------- /* ----------------------------------------------------------------------------
Copyright (c) 2018-2021, Microsoft Research, Daan Leijen Copyright (c) 2018-2025, Microsoft Research, Daan Leijen
This is free software; you can redistribute it and/or modify it under the This is free software; you can redistribute it and/or modify it under the
terms of the MIT license. A copy of the license can be found in the file terms of the MIT license. A copy of the license can be found in the file
"LICENSE" at the root of this distribution. "LICENSE" at the root of this distribution.
@ -25,12 +25,15 @@ without code changes, for example, on Unix you can use it as:
``` ```
Notable aspects of the design include: Notable aspects of the design include:
- __small and consistent__: the library is about 8k LOC using simple and - __small and consistent__: the library is about 8k LOC using simple and
consistent data structures. This makes it very suitable consistent data structures. This makes it very suitable
to integrate and adapt in other projects. For runtime systems it to integrate and adapt in other projects. For runtime systems it
provides hooks for a monotonic _heartbeat_ and deferred freeing (for provides hooks for a monotonic _heartbeat_ and deferred freeing (for
bounded worst-case times with reference counting). bounded worst-case times with reference counting).
Partly due to its simplicity, mimalloc has been ported to many systems (Windows, macOS,
Linux, WASM, various BSD's, Haiku, MUSL, etc) and has excellent support for dynamic overriding.
At the same time, it is an industrial strength allocator that runs (very) large scale
distributed services on thousands of machines with excellent worst case latencies.
- __free list sharding__: instead of one big free list (per size class) we have - __free list sharding__: instead of one big free list (per size class) we have
many smaller lists per "mimalloc page" which reduces fragmentation and many smaller lists per "mimalloc page" which reduces fragmentation and
increases locality -- increases locality --
@ -45,23 +48,23 @@ Notable aspects of the design include:
and the chance of contending on a single location will be low -- this is quite and the chance of contending on a single location will be low -- this is quite
similar to randomized algorithms like skip lists where adding similar to randomized algorithms like skip lists where adding
a random oracle removes the need for a more complex algorithm. a random oracle removes the need for a more complex algorithm.
- __eager page reset__: when a "page" becomes empty (with increased chance - __eager page purging__: when a "page" becomes empty (with increased chance
due to free list sharding) the memory is marked to the OS as unused ("reset" or "purged") due to free list sharding) the memory is marked to the OS as unused (reset or decommitted)
reducing (real) memory pressure and fragmentation, especially in long running reducing (real) memory pressure and fragmentation, especially in long running
programs. programs.
- __secure__: _mimalloc_ can be build in secure mode, adding guard pages, - __secure__: _mimalloc_ can be built in secure mode, adding guard pages,
randomized allocation, encrypted free lists, etc. to protect against various randomized allocation, encrypted free lists, etc. to protect against various
heap vulnerabilities. The performance penalty is only around 5% on average heap vulnerabilities. The performance penalty is usually around 10% on average
over our benchmarks. over our benchmarks.
- __first-class heaps__: efficiently create and use multiple heaps to allocate across different regions. - __first-class heaps__: efficiently create and use multiple heaps to allocate across different regions.
A heap can be destroyed at once instead of deallocating each object separately. A heap can be destroyed at once instead of deallocating each object separately.
- __bounded__: it does not suffer from _blowup_ \[1\], has bounded worst-case allocation - __bounded__: it does not suffer from _blowup_ \[1\], has bounded worst-case allocation
times (_wcat_), bounded space overhead (~0.2% meta-data, with low internal fragmentation), times (_wcat_) (upto OS primitives), bounded space overhead (~0.2% meta-data, with low
and has no internal points of contention using only atomic operations. internal fragmentation), and has no internal points of contention using only atomic operations.
- __fast__: In our benchmarks (see [below](#performance)), - __fast__: In our benchmarks (see [below](#bench)),
_mimalloc_ outperforms all other leading allocators (_jemalloc_, _tcmalloc_, _Hoard_, etc), _mimalloc_ outperforms other leading allocators (_jemalloc_, _tcmalloc_, _Hoard_, etc),
and usually uses less memory (up to 25% more in the worst case). A nice property and often uses less memory. A nice property is that it does consistently well over a wide range
is that it does consistently well over a wide range of benchmarks. of benchmarks. There is also good huge OS page support for larger server programs.
You can read more on the design of _mimalloc_ in the You can read more on the design of _mimalloc_ in the
[technical report](https://www.microsoft.com/en-us/research/publication/mimalloc-free-list-sharding-in-action) [technical report](https://www.microsoft.com/en-us/research/publication/mimalloc-free-list-sharding-in-action)
@ -278,8 +281,7 @@ void* mi_zalloc_small(size_t size);
/// The returned size can be /// The returned size can be
/// used to call \a mi_expand successfully. /// used to call \a mi_expand successfully.
/// The returned size is always at least equal to the /// The returned size is always at least equal to the
/// allocated size of \a p, and, in the current design, /// allocated size of \a p.
/// should be less than 16.7% more.
/// ///
/// @see [_msize](https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/msize?view=vs-2017) (Windows) /// @see [_msize](https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/msize?view=vs-2017) (Windows)
/// @see [malloc_usable_size](http://man7.org/linux/man-pages/man3/malloc_usable_size.3.html) (Linux) /// @see [malloc_usable_size](http://man7.org/linux/man-pages/man3/malloc_usable_size.3.html) (Linux)
@ -304,7 +306,7 @@ size_t mi_good_size(size_t size);
/// in very narrow circumstances; in particular, when a long running thread /// in very narrow circumstances; in particular, when a long running thread
/// allocates a lot of blocks that are freed by other threads it may improve /// allocates a lot of blocks that are freed by other threads it may improve
/// resource usage by calling this every once in a while. /// resource usage by calling this every once in a while.
void mi_collect(bool force); void mi_collect(bool force);
/// Deprecated /// Deprecated
/// @param out Ignored, outputs to the registered output function or stderr by default. /// @param out Ignored, outputs to the registered output function or stderr by default.
@ -428,7 +430,7 @@ int mi_reserve_os_memory(size_t size, bool commit, bool allow_large);
/// allocated in some manner and available for use my mimalloc. /// allocated in some manner and available for use my mimalloc.
/// @param start Start of the memory area /// @param start Start of the memory area
/// @param size The size of the memory area. /// @param size The size of the memory area.
/// @param commit Is the area already committed? /// @param is_committed Is the area already committed?
/// @param is_large Does it consist of large OS pages? Set this to \a true as well for memory /// @param is_large Does it consist of large OS pages? Set this to \a true as well for memory
/// that should not be decommitted or protected (like rdma etc.) /// that should not be decommitted or protected (like rdma etc.)
/// @param is_zero Does the area consists of zero's? /// @param is_zero Does the area consists of zero's?
@ -453,7 +455,7 @@ int mi_reserve_huge_os_pages_interleave(size_t pages, size_t numa_nodes, size_t
/// Reserve \a pages of huge OS pages (1GiB) at a specific \a numa_node, /// Reserve \a pages of huge OS pages (1GiB) at a specific \a numa_node,
/// but stops after at most `timeout_msecs` seconds. /// but stops after at most `timeout_msecs` seconds.
/// @param pages The number of 1GiB pages to reserve. /// @param pages The number of 1GiB pages to reserve.
/// @param numa_node The NUMA node where the memory is reserved (start at 0). /// @param numa_node The NUMA node where the memory is reserved (start at 0). Use -1 for no affinity.
/// @param timeout_msecs Maximum number of milli-seconds to try reserving, or 0 for no timeout. /// @param timeout_msecs Maximum number of milli-seconds to try reserving, or 0 for no timeout.
/// @returns 0 if successful, \a ENOMEM if running out of memory, or \a ETIMEDOUT if timed out. /// @returns 0 if successful, \a ENOMEM if running out of memory, or \a ETIMEDOUT if timed out.
/// ///
@ -486,6 +488,91 @@ bool mi_is_redirected();
/// on other systems as the amount of read/write accessible memory reserved by mimalloc. /// on other systems as the amount of read/write accessible memory reserved by mimalloc.
void mi_process_info(size_t* elapsed_msecs, size_t* user_msecs, size_t* system_msecs, size_t* current_rss, size_t* peak_rss, size_t* current_commit, size_t* peak_commit, size_t* page_faults); void mi_process_info(size_t* elapsed_msecs, size_t* user_msecs, size_t* system_msecs, size_t* current_rss, size_t* peak_rss, size_t* current_commit, size_t* peak_commit, size_t* page_faults);
/// @brief Show all current arena's.
/// @param show_inuse Show the arena blocks that are in use.
/// @param show_abandoned Show the abandoned arena blocks.
/// @param show_purge Show arena blocks scheduled for purging.
void mi_debug_show_arenas(bool show_inuse, bool show_abandoned, bool show_purge);
/// Mimalloc uses large (virtual) memory areas, called "arena"s, from the OS to manage its memory.
/// Each arena has an associated identifier.
typedef int mi_arena_id_t;
/// @brief Return the size of an arena.
/// @param arena_id The arena identifier.
/// @param size Returned size in bytes of the (virtual) arena area.
/// @return base address of the arena.
void* mi_arena_area(mi_arena_id_t arena_id, size_t* size);
/// @brief Reserve huge OS pages (1GiB) into a single arena.
/// @param pages Number of 1GiB pages to reserve.
/// @param numa_node The associated NUMA node, or -1 for no NUMA preference.
/// @param timeout_msecs Max amount of milli-seconds this operation is allowed to take. (0 is infinite)
/// @param exclusive If exclusive, only a heap associated with this arena can allocate in it.
/// @param arena_id The arena identifier.
/// @return 0 if successful, \a ENOMEM if running out of memory, or \a ETIMEDOUT if timed out.
int mi_reserve_huge_os_pages_at_ex(size_t pages, int numa_node, size_t timeout_msecs, bool exclusive, mi_arena_id_t* arena_id);
/// @brief Reserve OS memory to be managed in an arena.
/// @param size Size the reserve.
/// @param commit Should the memory be initially committed?
/// @param allow_large Allow the use of large OS pages?
/// @param exclusive Is the returned arena exclusive?
/// @param arena_id The new arena identifier.
/// @return Zero on success, an error code otherwise.
int mi_reserve_os_memory_ex(size_t size, bool commit, bool allow_large, bool exclusive, mi_arena_id_t* arena_id);
/// @brief Manage externally allocated memory as a mimalloc arena. This memory will not be freed by mimalloc.
/// @param start Start address of the area.
/// @param size Size in bytes of the area.
/// @param is_committed Is the memory already committed?
/// @param is_large Does it consist of (pinned) large OS pages?
/// @param is_zero Is the memory zero-initialized?
/// @param numa_node Associated NUMA node, or -1 to have no NUMA preference.
/// @param exclusive Is the arena exclusive (where only heaps associated with the arena can allocate in it)
/// @param arena_id The new arena identifier.
/// @return `true` if successful.
bool mi_manage_os_memory_ex(void* start, size_t size, bool is_committed, bool is_large, bool is_zero, int numa_node, bool exclusive, mi_arena_id_t* arena_id);
/// @brief Create a new heap that only allocates in the specified arena.
/// @param arena_id The arena identifier.
/// @return The new heap or `NULL`.
mi_heap_t* mi_heap_new_in_arena(mi_arena_id_t arena_id);
/// @brief Create a new heap
/// @param heap_tag The heap tag associated with this heap; heaps only reclaim memory between heaps with the same tag.
/// @param allow_destroy Is \a mi_heap_destroy allowed? Not allowing this allows the heap to reclaim memory from terminated threads.
/// @param arena_id If not 0, the heap will only allocate from the specified arena.
/// @return A new heap or `NULL` on failure.
///
/// The \a arena_id can be used by runtimes to allocate only in a specified pre-reserved arena.
/// This is used for example for a compressed pointer heap in Koka.
/// The \a heap_tag enables heaps to keep objects of a certain type isolated to heaps with that tag.
/// This is used for example in the CPython integration.
mi_heap_t* mi_heap_new_ex(int heap_tag, bool allow_destroy, mi_arena_id_t arena_id);
/// A process can associate threads with sub-processes.
/// A sub-process will not reclaim memory from (abandoned heaps/threads)
/// other subprocesses.
typedef void* mi_subproc_id_t;
/// @brief Get the main sub-process identifier.
mi_subproc_id_t mi_subproc_main(void);
/// @brief Create a fresh sub-process (with no associated threads yet).
/// @return The new sub-process identifier.
mi_subproc_id_t mi_subproc_new(void);
/// @brief Delete a previously created sub-process.
/// @param subproc The sub-process identifier.
/// Only delete sub-processes if all associated threads have terminated.
void mi_subproc_delete(mi_subproc_id_t subproc);
/// Add the current thread to the given sub-process.
/// This should be called right after a thread is created (and no allocation has taken place yet)
void mi_subproc_add_current_thread(mi_subproc_id_t subproc);
/// \} /// \}
// ------------------------------------------------------ // ------------------------------------------------------
@ -495,20 +582,24 @@ void mi_process_info(size_t* elapsed_msecs, size_t* user_msecs, size_t* system_m
/// \defgroup aligned Aligned Allocation /// \defgroup aligned Aligned Allocation
/// ///
/// Allocating aligned memory blocks. /// Allocating aligned memory blocks.
/// Note that `alignment` always follows `size` for consistency with the unaligned
/// allocation API, but unfortunately this differs from `posix_memalign` and `aligned_alloc` in the C library.
/// ///
/// \{ /// \{
/// The maximum supported alignment size (currently 1MiB).
#define MI_BLOCK_ALIGNMENT_MAX (1024*1024UL)
/// Allocate \a size bytes aligned by \a alignment. /// Allocate \a size bytes aligned by \a alignment.
/// @param size number of bytes to allocate. /// @param size number of bytes to allocate.
/// @param alignment the minimal alignment of the allocated memory. Must be less than #MI_BLOCK_ALIGNMENT_MAX. /// @param alignment the minimal alignment of the allocated memory.
/// @returns pointer to the allocated memory or \a NULL if out of memory. /// @returns pointer to the allocated memory or \a NULL if out of memory,
/// The returned pointer is aligned by \a alignment, i.e. /// or if the alignment is not a power of 2 (including 0). The \a size is unrestricted
/// `(uintptr_t)p % alignment == 0`. /// (and does not have to be an integral multiple of the \a alignment).
/// /// The returned pointer is aligned by \a alignment, i.e. `(uintptr_t)p % alignment == 0`.
/// Returns a unique pointer if called with \a size 0. /// Returns a unique pointer if called with \a size 0.
///
/// Note that `alignment` always follows `size` for consistency with the unaligned
/// allocation API, but unfortunately this differs from `posix_memalign` and `aligned_alloc` in the C library.
///
/// @see [aligned_alloc](https://en.cppreference.com/w/c/memory/aligned_alloc) (in the standard C11 library, with switched arguments!)
/// @see [_aligned_malloc](https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/aligned-malloc?view=vs-2017) (on Windows) /// @see [_aligned_malloc](https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/aligned-malloc?view=vs-2017) (on Windows)
/// @see [aligned_alloc](http://man.openbsd.org/reallocarray) (on BSD, with switched arguments!) /// @see [aligned_alloc](http://man.openbsd.org/reallocarray) (on BSD, with switched arguments!)
/// @see [posix_memalign](https://linux.die.net/man/3/posix_memalign) (on Posix, with switched arguments!) /// @see [posix_memalign](https://linux.die.net/man/3/posix_memalign) (on Posix, with switched arguments!)
@ -522,11 +613,12 @@ void* mi_realloc_aligned(void* p, size_t newsize, size_t alignment);
/// @param size number of bytes to allocate. /// @param size number of bytes to allocate.
/// @param alignment the minimal alignment of the allocated memory at \a offset. /// @param alignment the minimal alignment of the allocated memory at \a offset.
/// @param offset the offset that should be aligned. /// @param offset the offset that should be aligned.
/// @returns pointer to the allocated memory or \a NULL if out of memory. /// @returns pointer to the allocated memory or \a NULL if out of memory,
/// The returned pointer is aligned by \a alignment at \a offset, i.e. /// or if the alignment is not a power of 2 (including 0). The \a size is unrestricted
/// `((uintptr_t)p + offset) % alignment == 0`. /// (and does not have to be an integral multiple of the \a alignment).
/// /// The returned pointer is aligned by \a alignment, i.e. `(uintptr_t)p % alignment == 0`.
/// Returns a unique pointer if called with \a size 0. /// Returns a unique pointer if called with \a size 0.
///
/// @see [_aligned_offset_malloc](https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/aligned-offset-malloc?view=vs-2017) (on Windows) /// @see [_aligned_offset_malloc](https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/aligned-offset-malloc?view=vs-2017) (on Windows)
void* mi_malloc_aligned_at(size_t size, size_t alignment, size_t offset); void* mi_malloc_aligned_at(size_t size, size_t alignment, size_t offset);
void* mi_zalloc_aligned_at(size_t size, size_t alignment, size_t offset); void* mi_zalloc_aligned_at(size_t size, size_t alignment, size_t offset);
@ -574,12 +666,12 @@ void mi_heap_delete(mi_heap_t* heap);
/// heap is set to the backing heap. /// heap is set to the backing heap.
void mi_heap_destroy(mi_heap_t* heap); void mi_heap_destroy(mi_heap_t* heap);
/// Set the default heap to use for mi_malloc() et al. /// Set the default heap to use in the current thread for mi_malloc() et al.
/// @param heap The new default heap. /// @param heap The new default heap.
/// @returns The previous default heap. /// @returns The previous default heap.
mi_heap_t* mi_heap_set_default(mi_heap_t* heap); mi_heap_t* mi_heap_set_default(mi_heap_t* heap);
/// Get the default heap that is used for mi_malloc() et al. /// Get the default heap that is used for mi_malloc() et al. (for the current thread).
/// @returns The current default heap. /// @returns The current default heap.
mi_heap_t* mi_heap_get_default(); mi_heap_t* mi_heap_get_default();
@ -764,6 +856,8 @@ typedef struct mi_heap_area_s {
size_t committed; ///< current committed bytes of this area size_t committed; ///< current committed bytes of this area
size_t used; ///< bytes in use by allocated blocks size_t used; ///< bytes in use by allocated blocks
size_t block_size; ///< size in bytes of one block size_t block_size; ///< size in bytes of one block
size_t full_block_size; ///< size in bytes of a full block including padding and metadata.
int heap_tag; ///< heap tag associated with this area (see \a mi_heap_new_ex)
} mi_heap_area_t; } mi_heap_area_t;
/// Visitor function passed to mi_heap_visit_blocks() /// Visitor function passed to mi_heap_visit_blocks()
@ -788,6 +882,23 @@ typedef bool (mi_block_visit_fun)(const mi_heap_t* heap, const mi_heap_area_t* a
/// @returns \a true if all areas and blocks were visited. /// @returns \a true if all areas and blocks were visited.
bool mi_heap_visit_blocks(const mi_heap_t* heap, bool visit_all_blocks, mi_block_visit_fun* visitor, void* arg); bool mi_heap_visit_blocks(const mi_heap_t* heap, bool visit_all_blocks, mi_block_visit_fun* visitor, void* arg);
/// @brief Visit all areas and blocks in abandoned heaps.
/// @param subproc_id The sub-process id associated with the abandoned heaps.
/// @param heap_tag Visit only abandoned memory with the specified heap tag, use -1 to visit all abandoned memory.
/// @param visit_blocks If \a true visits all allocated blocks, otherwise
/// \a visitor is only called for every heap area.
/// @param visitor This function is called for every area in the heap
/// (with \a block as \a NULL). If \a visit_all_blocks is
/// \a true, \a visitor is also called for every allocated
/// block in every area (with `block!=NULL`).
/// return \a false from this function to stop visiting early.
/// @param arg extra argument passed to the \a visitor.
/// @return \a true if all areas and blocks were visited.
///
/// Note: requires the option `mi_option_visit_abandoned` to be set
/// at the start of the program.
bool mi_abandoned_visit_blocks(mi_subproc_id_t subproc_id, int heap_tag, bool visit_blocks, mi_block_visit_fun* visitor, void* arg);
/// \} /// \}
/// \defgroup options Runtime Options /// \defgroup options Runtime Options
@ -799,34 +910,38 @@ bool mi_heap_visit_blocks(const mi_heap_t* heap, bool visit_all_blocks, mi_block
/// Runtime options. /// Runtime options.
typedef enum mi_option_e { typedef enum mi_option_e {
// stable options // stable options
mi_option_show_errors, ///< Print error messages to `stderr`. mi_option_show_errors, ///< Print error messages.
mi_option_show_stats, ///< Print statistics to `stderr` when the program is done. mi_option_show_stats, ///< Print statistics on termination.
mi_option_verbose, ///< Print verbose messages to `stderr`. mi_option_verbose, ///< Print verbose messages.
mi_option_max_errors, ///< issue at most N error messages
mi_option_max_warnings, ///< issue at most N warning messages
// the following options are experimental // advanced options
mi_option_eager_commit, ///< Eagerly commit segments (4MiB) (enabled by default). mi_option_reserve_huge_os_pages, ///< reserve N huge OS pages (1GiB pages) at startup
mi_option_large_os_pages, ///< Use large OS pages (2MiB in size) if possible mi_option_reserve_huge_os_pages_at, ///< Reserve N huge OS pages at a specific NUMA node N.
mi_option_reserve_huge_os_pages, ///< The number of huge OS pages (1GiB in size) to reserve at the start of the program. mi_option_reserve_os_memory, ///< reserve specified amount of OS memory in an arena at startup (internally, this value is in KiB; use `mi_option_get_size`)
mi_option_reserve_huge_os_pages_at, ///< Reserve huge OS pages at node N. mi_option_allow_large_os_pages, ///< allow large (2 or 4 MiB) OS pages, implies eager commit. If false, also disables THP for the process.
mi_option_reserve_os_memory, ///< Reserve specified amount of OS memory at startup, e.g. "1g" or "512m". mi_option_purge_decommits, ///< should a memory purge decommit? (=1). Set to 0 to use memory reset on a purge (instead of decommit)
mi_option_segment_cache, ///< The number of segments per thread to keep cached (0). mi_option_arena_reserve, ///< initial memory size for arena reservation (= 1 GiB on 64-bit) (internally, this value is in KiB; use `mi_option_get_size`)
mi_option_page_reset, ///< Reset page memory after \a mi_option_reset_delay milliseconds when it becomes free. mi_option_os_tag, ///< tag used for OS logging (macOS only for now) (=100)
mi_option_abandoned_page_reset, //< Reset free page memory when a thread terminates. mi_option_retry_on_oom, ///< retry on out-of-memory for N milli seconds (=400), set to 0 to disable retries. (only on windows)
mi_option_use_numa_nodes, ///< Pretend there are at most N NUMA nodes; Use 0 to use the actual detected NUMA nodes at runtime.
mi_option_eager_commit_delay, ///< the first N segments per thread are not eagerly committed (=1).
mi_option_os_tag, ///< OS tag to assign to mimalloc'd memory
mi_option_limit_os_alloc, ///< If set to 1, do not use OS memory for allocation (but only pre-reserved arenas)
// v1.x specific options // experimental options
mi_option_eager_region_commit, ///< Eagerly commit large (256MiB) memory regions (enabled by default, except on Windows) mi_option_eager_commit, ///< eager commit segments? (after `eager_commit_delay` segments) (enabled by default).
mi_option_segment_reset, ///< Experimental mi_option_eager_commit_delay, ///< the first N segments per thread are not eagerly committed (but per page in the segment on demand)
mi_option_reset_delay, ///< Delay in milli-seconds before resetting a page (100ms by default) mi_option_arena_eager_commit, ///< eager commit arenas? Use 2 to enable just on overcommit systems (=2)
mi_option_purge_decommits, ///< Experimental mi_option_abandoned_page_purge, ///< immediately purge delayed purges on thread termination
mi_option_purge_delay, ///< memory purging is delayed by N milli seconds; use 0 for immediate purging or -1 for no purging at all. (=10)
// v2.x specific options mi_option_use_numa_nodes, ///< 0 = use all available numa nodes, otherwise use at most N nodes.
mi_option_allow_purge, ///< Enable decommitting memory (=on) mi_option_disallow_os_alloc, ///< 1 = do not use OS memory for allocation (but only programmatically reserved arenas)
mi_option_purge_delay, ///< Decommit page memory after N milli-seconds delay (25ms). mi_option_limit_os_alloc, ///< If set to 1, do not use OS memory for allocation (but only pre-reserved arenas)
mi_option_segment_purge_delay, ///< Decommit large segment memory after N milli-seconds delay (500ms). mi_option_max_segment_reclaim, ///< max. percentage of the abandoned segments can be reclaimed per try (=10%)
mi_option_destroy_on_exit, ///< if set, release all memory on exit; sometimes used for dynamic unloading but can be unsafe
mi_option_arena_purge_mult, ///< multiplier for `purge_delay` for the purging delay for arenas (=10)
mi_option_abandoned_reclaim_on_free, ///< allow to reclaim an abandoned segment on a free (=1)
mi_option_purge_extend_delay, ///< extend purge delay on each subsequent delay (=1)
mi_option_disallow_arena_alloc, ///< 1 = do not use arena's for allocation (except if using specific arena id's)
mi_option_visit_abandoned, ///< allow visiting heap blocks from abandoned threads (=0)
_mi_option_last _mi_option_last
} mi_option_t; } mi_option_t;
@ -838,7 +953,10 @@ void mi_option_disable(mi_option_t option);
void mi_option_set_enabled(mi_option_t option, bool enable); void mi_option_set_enabled(mi_option_t option, bool enable);
void mi_option_set_enabled_default(mi_option_t option, bool enable); void mi_option_set_enabled_default(mi_option_t option, bool enable);
long mi_option_get(mi_option_t option); long mi_option_get(mi_option_t option);
long mi_option_get_clamp(mi_option_t option, long min, long max);
size_t mi_option_get_size(mi_option_t option);
void mi_option_set(mi_option_t option, long value); void mi_option_set(mi_option_t option, long value);
void mi_option_set_default(mi_option_t option, long value); void mi_option_set_default(mi_option_t option, long value);
@ -852,21 +970,27 @@ void mi_option_set_default(mi_option_t option, long value);
/// ///
/// \{ /// \{
void* mi_recalloc(void* p, size_t count, size_t size);
size_t mi_malloc_size(const void* p);
size_t mi_malloc_usable_size(const void *p);
/// Just as `free` but also checks if the pointer `p` belongs to our heap. /// Just as `free` but also checks if the pointer `p` belongs to our heap.
void mi_cfree(void* p); void mi_cfree(void* p);
void* mi__expand(void* p, size_t newsize);
void* mi_recalloc(void* p, size_t count, size_t size);
size_t mi_malloc_size(const void* p);
size_t mi_malloc_good_size(size_t size);
size_t mi_malloc_usable_size(const void *p);
int mi_posix_memalign(void** p, size_t alignment, size_t size); int mi_posix_memalign(void** p, size_t alignment, size_t size);
int mi__posix_memalign(void** p, size_t alignment, size_t size); int mi__posix_memalign(void** p, size_t alignment, size_t size);
void* mi_memalign(size_t alignment, size_t size); void* mi_memalign(size_t alignment, size_t size);
void* mi_valloc(size_t size); void* mi_valloc(size_t size);
void* mi_pvalloc(size_t size); void* mi_pvalloc(size_t size);
void* mi_aligned_alloc(size_t alignment, size_t size); void* mi_aligned_alloc(size_t alignment, size_t size);
unsigned short* mi_wcsdup(const unsigned short* s);
unsigned char* mi_mbsdup(const unsigned char* s);
int mi_dupenv_s(char** buf, size_t* size, const char* name);
int mi_wdupenv_s(unsigned short** buf, size_t* size, const unsigned short* name);
/// Correspond s to [reallocarray](https://www.freebsd.org/cgi/man.cgi?query=reallocarray&sektion=3&manpath=freebsd-release-ports) /// Correspond s to [reallocarray](https://www.freebsd.org/cgi/man.cgi?query=reallocarray&sektion=3&manpath=freebsd-release-ports)
/// in FreeBSD. /// in FreeBSD.
void* mi_reallocarray(void* p, size_t count, size_t size); void* mi_reallocarray(void* p, size_t count, size_t size);
@ -874,6 +998,9 @@ void* mi_reallocarray(void* p, size_t count, size_t size);
/// Corresponds to [reallocarr](https://man.netbsd.org/reallocarr.3) in NetBSD. /// Corresponds to [reallocarr](https://man.netbsd.org/reallocarr.3) in NetBSD.
int mi_reallocarr(void* p, size_t count, size_t size); int mi_reallocarr(void* p, size_t count, size_t size);
void* mi_aligned_recalloc(void* p, size_t newcount, size_t size, size_t alignment);
void* mi_aligned_offset_recalloc(void* p, size_t newcount, size_t size, size_t alignment, size_t offset);
void mi_free_size(void* p, size_t size); void mi_free_size(void* p, size_t size);
void mi_free_size_aligned(void* p, size_t size, size_t alignment); void mi_free_size_aligned(void* p, size_t size, size_t alignment);
void mi_free_aligned(void* p, size_t alignment); void mi_free_aligned(void* p, size_t alignment);
@ -998,7 +1125,7 @@ mimalloc uses only safe OS calls (`mmap` and `VirtualAlloc`) and can co-exist
with other allocators linked to the same program. with other allocators linked to the same program.
If you use `cmake`, you can simply use: If you use `cmake`, you can simply use:
``` ```
find_package(mimalloc 1.0 REQUIRED) find_package(mimalloc 2.1 REQUIRED)
``` ```
in your `CMakeLists.txt` to find a locally installed mimalloc. Then use either: in your `CMakeLists.txt` to find a locally installed mimalloc. Then use either:
``` ```
@ -1012,7 +1139,7 @@ to link with the static library. See `test\CMakeLists.txt` for an example.
### C++ ### C++
For best performance in C++ programs, it is also recommended to override the For best performance in C++ programs, it is also recommended to override the
global `new` and `delete` operators. For convience, mimalloc provides global `new` and `delete` operators. For convenience, mimalloc provides
[`mimalloc-new-delete.h`](https://github.com/microsoft/mimalloc/blob/master/include/mimalloc-new-delete.h) which does this for you -- just include it in a single(!) source file in your project. [`mimalloc-new-delete.h`](https://github.com/microsoft/mimalloc/blob/master/include/mimalloc-new-delete.h) which does this for you -- just include it in a single(!) source file in your project.
In C++, mimalloc also provides the `mi_stl_allocator` struct which implements the `std::allocator` In C++, mimalloc also provides the `mi_stl_allocator` struct which implements the `std::allocator`
@ -1071,38 +1198,64 @@ See \ref overrides for more info.
/*! \page environment Environment Options /*! \page environment Environment Options
You can set further options either programmatically (using [`mi_option_set`](https://microsoft.github.io/mimalloc/group__options.html)), You can set further options either programmatically (using [`mi_option_set`](https://microsoft.github.io/mimalloc/group__options.html)), or via environment variables:
or via environment variables.
- `MIMALLOC_SHOW_STATS=1`: show statistics when the program terminates. - `MIMALLOC_SHOW_STATS=1`: show statistics when the program terminates.
- `MIMALLOC_VERBOSE=1`: show verbose messages. - `MIMALLOC_VERBOSE=1`: show verbose messages.
- `MIMALLOC_SHOW_ERRORS=1`: show error and warning messages. - `MIMALLOC_SHOW_ERRORS=1`: show error and warning messages.
- `MIMALLOC_PAGE_RESET=0`: by default, mimalloc will reset (or purge) OS pages when not in use to signal to the OS
that the underlying physical memory can be reused. This can reduce memory fragmentation in long running (server) Advanced options:
programs. By setting it to `0` no such page resets will be done which can improve performance for programs that are not long
running. As an alternative, the `MIMALLOC_DECOMMIT_DELAY=`<msecs> can be set higher (100ms by default) to make the page - `MIMALLOC_ARENA_EAGER_COMMIT=2`: turns on eager commit for the large arenas (usually 1GiB) from which mimalloc
reset occur less frequently instead of turning it off completely. allocates segments and pages. Set this to 2 (default) to
- `MIMALLOC_LARGE_OS_PAGES=1`: use large OS pages (2MiB) when available; for some workloads this can significantly only enable this on overcommit systems (e.g. Linux). Set this to 1 to enable explicitly on other systems
improve performance. Use `MIMALLOC_VERBOSE` to check if the large OS pages are enabled -- usually one needs as well (like Windows or macOS) which may improve performance (as the whole arena is committed at once).
to explicitly allow large OS pages (as on [Windows][windows-huge] and [Linux][linux-huge]). However, sometimes Note that eager commit only increases the commit but not the actual the peak resident set
(rss) so it is generally ok to enable this.
- `MIMALLOC_PURGE_DELAY=N`: the delay in `N` milli-seconds (by default `10`) after which mimalloc will purge
OS pages that are not in use. This signals to the OS that the underlying physical memory can be reused which
can reduce memory fragmentation especially in long running (server) programs. Setting `N` to `0` purges immediately when
a page becomes unused which can improve memory usage but also decreases performance. Setting `N` to a higher
value like `100` can improve performance (sometimes by a lot) at the cost of potentially using more memory at times.
Setting it to `-1` disables purging completely.
- `MIMALLOC_PURGE_DECOMMITS=1`: By default "purging" memory means unused memory is decommitted (`MEM_DECOMMIT` on Windows,
`MADV_DONTNEED` (which decresease rss immediately) on `mmap` systems). Set this to 0 to instead "reset" unused
memory on a purge (`MEM_RESET` on Windows, generally `MADV_FREE` (which does not decrease rss immediately) on `mmap` systems).
Mimalloc generally does not "free" OS memory but only "purges" OS memory, in other words, it tries to keep virtual
address ranges and decommits within those ranges (to make the underlying physical memory available to other processes).
Further options for large workloads and services:
- `MIMALLOC_USE_NUMA_NODES=N`: pretend there are at most `N` NUMA nodes. If not set, the actual NUMA nodes are detected
at runtime. Setting `N` to 1 may avoid problems in some virtual environments. Also, setting it to a lower number than
the actual NUMA nodes is fine and will only cause threads to potentially allocate more memory across actual NUMA
nodes (but this can happen in any case as NUMA local allocation is always a best effort but not guaranteed).
- `MIMALLOC_ALLOW_LARGE_OS_PAGES=1`: use large OS pages (2 or 4MiB) when available; for some workloads this can significantly
improve performance. When this option is disabled (default), it also disables transparent huge pages (THP) for the process
(on Linux and Android). On Linux the default setting is 2 -- this enables the use of large pages through THP only.
Use `MIMALLOC_VERBOSE` to check if the large OS pages are enabled -- usually one needs
to explicitly give permissions for large OS pages (as on [Windows][windows-huge] and [Linux][linux-huge]). However, sometimes
the OS is very slow to reserve contiguous physical memory for large OS pages so use with care on systems that the OS is very slow to reserve contiguous physical memory for large OS pages so use with care on systems that
can have fragmented memory (for that reason, we generally recommend to use `MIMALLOC_RESERVE_HUGE_OS_PAGES` instead when possible). can have fragmented memory (for that reason, we generally recommend to use `MIMALLOC_RESERVE_HUGE_OS_PAGES` instead whenever possible).
- `MIMALLOC_RESERVE_HUGE_OS_PAGES=N`: where N is the number of 1GiB _huge_ OS pages. This reserves the huge pages at - `MIMALLOC_RESERVE_HUGE_OS_PAGES=N`: where `N` is the number of 1GiB _huge_ OS pages. This reserves the huge pages at
startup and sometimes this can give a large (latency) performance improvement on big workloads. startup and sometimes this can give a large (latency) performance improvement on big workloads.
Usually it is better to not use Usually it is better to not use `MIMALLOC_ALLOW_LARGE_OS_PAGES=1` in combination with this setting. Just like large
`MIMALLOC_LARGE_OS_PAGES` in combination with this setting. Just like large OS pages, use with care as reserving OS pages, use with care as reserving
contiguous physical memory can take a long time when memory is fragmented (but reserving the huge pages is done at contiguous physical memory can take a long time when memory is fragmented (but reserving the huge pages is done at
startup only once). startup only once).
Note that we usually need to explicitly enable huge OS pages (as on [Windows][windows-huge] and [Linux][linux-huge])). With huge OS pages, it may be beneficial to set the setting Note that we usually need to explicitly give permission for huge OS pages (as on [Windows][windows-huge] and [Linux][linux-huge])).
With huge OS pages, it may be beneficial to set the setting
`MIMALLOC_EAGER_COMMIT_DELAY=N` (`N` is 1 by default) to delay the initial `N` segments (of 4MiB) `MIMALLOC_EAGER_COMMIT_DELAY=N` (`N` is 1 by default) to delay the initial `N` segments (of 4MiB)
of a thread to not allocate in the huge OS pages; this prevents threads that are short lived of a thread to not allocate in the huge OS pages; this prevents threads that are short lived
and allocate just a little to take up space in the huge OS page area (which cannot be reset). and allocate just a little to take up space in the huge OS page area (which cannot be purged as huge OS pages are pinned
- `MIMALLOC_RESERVE_HUGE_OS_PAGES_AT=N`: where N is the numa node. This reserves the huge pages at a specific numa node. to physical memory).
(`N` is -1 by default to reserve huge pages evenly among the given number of numa nodes (or use the available ones as detected)) The huge pages are usually allocated evenly among NUMA nodes.
We can use `MIMALLOC_RESERVE_HUGE_OS_PAGES_AT=N` where `N` is the numa node (starting at 0) to allocate all
the huge pages at a specific numa node instead.
Use caution when using `fork` in combination with either large or huge OS pages: on a fork, the OS uses copy-on-write Use caution when using `fork` in combination with either large or huge OS pages: on a fork, the OS uses copy-on-write
for all pages in the original process including the huge OS pages. When any memory is now written in that area, the for all pages in the original process including the huge OS pages. When any memory is now written in that area, the
OS will copy the entire 1GiB huge page (or 2MiB large page) which can cause the memory usage to grow in big increments. OS will copy the entire 1GiB huge page (or 2MiB large page) which can cause the memory usage to grow in large increments.
[linux-huge]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/tuning_and_optimizing_red_hat_enterprise_linux_for_oracle_9i_and_10g_databases/sect-oracle_9i_and_10g_tuning_guide-large_memory_optimization_big_pages_and_huge_pages-configuring_huge_pages_in_red_hat_enterprise_linux_4_or_5 [linux-huge]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/tuning_and_optimizing_red_hat_enterprise_linux_for_oracle_9i_and_10g_databases/sect-oracle_9i_and_10g_tuning_guide-large_memory_optimization_big_pages_and_huge_pages-configuring_huge_pages_in_red_hat_enterprise_linux_4_or_5
[windows-huge]: https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/enable-the-lock-pages-in-memory-option-windows?view=sql-server-2017 [windows-huge]: https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/enable-the-lock-pages-in-memory-option-windows?view=sql-server-2017
@ -1111,87 +1264,105 @@ OS will copy the entire 1GiB huge page (or 2MiB large page) which can cause the
/*! \page overrides Overriding Malloc /*! \page overrides Overriding Malloc
Overriding the standard `malloc` can be done either _dynamically_ or _statically_. Overriding the standard `malloc` (and `new`) can be done either _dynamically_ or _statically_.
## Dynamic override ## Dynamic override
This is the recommended way to override the standard malloc interface. This is the recommended way to override the standard malloc interface.
### Dynamic Override on Linux, BSD
### Linux, BSD On these ELF-based systems we preload the mimalloc shared
On these systems we preload the mimalloc shared
library so all calls to the standard `malloc` interface are library so all calls to the standard `malloc` interface are
resolved to the _mimalloc_ library. resolved to the _mimalloc_ library.
```
- `env LD_PRELOAD=/usr/lib/libmimalloc.so myprogram` > env LD_PRELOAD=/usr/lib/libmimalloc.so myprogram
```
You can set extra environment variables to check that mimalloc is running, You can set extra environment variables to check that mimalloc is running,
like: like:
``` ```
env MIMALLOC_VERBOSE=1 LD_PRELOAD=/usr/lib/libmimalloc.so myprogram > env MIMALLOC_VERBOSE=1 LD_PRELOAD=/usr/lib/libmimalloc.so myprogram
``` ```
or run with the debug version to get detailed statistics: or run with the debug version to get detailed statistics:
``` ```
env MIMALLOC_SHOW_STATS=1 LD_PRELOAD=/usr/lib/libmimalloc-debug.so myprogram > env MIMALLOC_SHOW_STATS=1 LD_PRELOAD=/usr/lib/libmimalloc-debug.so myprogram
``` ```
### MacOS ### Dynamic Override on MacOS
On macOS we can also preload the mimalloc shared On macOS we can also preload the mimalloc shared
library so all calls to the standard `malloc` interface are library so all calls to the standard `malloc` interface are
resolved to the _mimalloc_ library. resolved to the _mimalloc_ library.
```
- `env DYLD_FORCE_FLAT_NAMESPACE=1 DYLD_INSERT_LIBRARIES=/usr/lib/libmimalloc.dylib myprogram` > env DYLD_INSERT_LIBRARIES=/usr/lib/libmimalloc.dylib myprogram
```
Note that certain security restrictions may apply when doing this from Note that certain security restrictions may apply when doing this from
the [shell](https://stackoverflow.com/questions/43941322/dyld-insert-libraries-ignored-when-calling-application-through-bash). the [shell](https://stackoverflow.com/questions/43941322/dyld-insert-libraries-ignored-when-calling-application-through-bash).
(Note: macOS support for dynamic overriding is recent, please report any issues.)
### Dynamic Override on Windows
### Windows <span id="override_on_windows">Dynamically overriding on mimalloc on Windows</span>
is robust and has the particular advantage to be able to redirect all malloc/free calls
that go through the (dynamic) C runtime allocator, including those from other DLL's or
libraries. As it intercepts all allocation calls on a low level, it can be used reliably
on large programs that include other 3rd party components.
There are four requirements to make the overriding work well:
Overriding on Windows is robust and has the 1. Use the C-runtime library as a DLL (using the `/MD` or `/MDd` switch).
particular advantage to be able to redirect all malloc/free calls that go through
the (dynamic) C runtime allocator, including those from other DLL's or libraries.
The overriding on Windows requires that you link your program explicitly with 2. Link your program explicitly with the `mimalloc.lib` export library for the `mimalloc.dll`.
the mimalloc DLL and use the C-runtime library as a DLL (using the `/MD` or `/MDd` switch). (which must be compiled with `-DMI_OVERRIDE=ON`, which is the default though).
Also, the `mimalloc-redirect.dll` (or `mimalloc-redirect32.dll`) must be available To ensure the `mimalloc.dll` is actually loaded at run-time it is easiest
in the same folder as the main `mimalloc-override.dll` at runtime (as it is a dependency). to insert some call to the mimalloc API in the `main` function, like `mi_version()`
The redirection DLL ensures that all calls to the C runtime malloc API get redirected to (or use the `/include:mi_version` switch on the linker command, or
mimalloc (in `mimalloc-override.dll`). similarly, `#pragma comment(linker, "/include:mi_version")` in some source file).
See the `mimalloc-test-override` project for an example on how to use this.
To ensure the mimalloc DLL is loaded at run-time it is easiest to insert some 3. The `mimalloc-redirect.dll` must be put in the same directory as the main
call to the mimalloc API in the `main` function, like `mi_version()` `mimalloc.dll` at runtime (as it is a dependency of that DLL).
(or use the `/INCLUDE:mi_version` switch on the linker). See the `mimalloc-override-test` project The redirection DLL ensures that all calls to the C runtime malloc API get
for an example on how to use this. For best performance on Windows with C++, it redirected to mimalloc functions (which reside in `mimalloc.dll`).
4. Ensure the `mimalloc.dll` comes as early as possible in the import
list of the final executable (so it can intercept all potential allocations).
You can use `minject -l <exe>` to check this if needed.
For best performance on Windows with C++, it
is also recommended to also override the `new`/`delete` operations (by including is also recommended to also override the `new`/`delete` operations (by including
[`mimalloc-new-delete.h`](https://github.com/microsoft/mimalloc/blob/master/include/mimalloc-new-delete.h) a single(!) source file in your project). [`mimalloc-new-delete.h`](include/mimalloc-new-delete.h)
a single(!) source file in your project).
The environment variable `MIMALLOC_DISABLE_REDIRECT=1` can be used to disable dynamic The environment variable `MIMALLOC_DISABLE_REDIRECT=1` can be used to disable dynamic
overriding at run-time. Use `MIMALLOC_VERBOSE=1` to check if mimalloc was successfully redirected. overriding at run-time. Use `MIMALLOC_VERBOSE=1` to check if mimalloc was successfully
redirected.
(Note: in principle, it is possible to even patch existing executables without any recompilation For different platforms than x64, you may need a specific [redirection dll](bin).
if they are linked with the dynamic C runtime (`ucrtbase.dll`) -- just put the `mimalloc-override.dll` Furthermore, we cannot always re-link an executable or ensure `mimalloc.dll` comes
into the import table (and put `mimalloc-redirect.dll` in the same folder) first in the import table. In such cases the [`minject`](bin) tool can be used
Such patching can be done for example with [CFF Explorer](https://ntcore.com/?page_id=388)). to patch the executable's import tables.
## Static override ## Static override
On Unix systems, you can also statically link with _mimalloc_ to override the standard On Unix-like systems, you can also statically link with _mimalloc_ to override the standard
malloc interface. The recommended way is to link the final program with the malloc interface. The recommended way is to link the final program with the
_mimalloc_ single object file (`mimalloc-override.o`). We use _mimalloc_ single object file (`mimalloc.o`). We use
an object file instead of a library file as linkers give preference to an object file instead of a library file as linkers give preference to
that over archives to resolve symbols. To ensure that the standard that over archives to resolve symbols. To ensure that the standard
malloc interface resolves to the _mimalloc_ library, link it as the first malloc interface resolves to the _mimalloc_ library, link it as the first
object file. For example: object file. For example:
```
> gcc -o myprogram mimalloc.o myfile1.c ...
```
``` Another way to override statically that works on all platforms, is to
gcc -o myprogram mimalloc-override.o myfile1.c ... link statically to mimalloc (as shown in the introduction) and include a
``` header file in each source file that re-defines `malloc` etc. to `mi_malloc`.
This is provided by [`mimalloc-override.h`](https://github.com/microsoft/mimalloc/blob/master/include/mimalloc-override.h). This only works reliably though if all sources are
under your control or otherwise mixing of pointers from different heaps may occur!
## List of Overrides: ## List of Overrides:

View file

@ -47,3 +47,14 @@ div.fragment {
#nav-sync img { #nav-sync img {
display: none; display: none;
} }
h1,h2,h3,h4,h5,h6 {
transition:none;
}
.memtitle {
background-image: none;
background-color: #EEE;
}
table.memproto, .memproto {
text-shadow: none;
font-size: 110%;
}

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Data Structures</title> <title>mi-malloc: Data Structures</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('annotated.html',''); initResizable(); }); $(function(){initNavTree('annotated.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,20 +91,26 @@ $(document).ready(function(){initNavTree('annotated.html',''); initResizable();
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="header"> <div class="header">
<div class="headertitle"> <div class="headertitle"><div class="title">Data Structures</div></div>
<div class="title">Data Structures</div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory"> <div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
<table class="directory"> <table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="group__analysis.html#structmi__heap__area__t" target="_self">mi_heap_area_t</a></td><td class="desc">An area of heap space contains blocks of a single size </td></tr> <tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="group__analysis.html#structmi__heap__area__t" target="_self">mi_heap_area_t</a></td><td class="desc">An area of heap space contains blocks of a single size </td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="group__cpp.html#structmi__stl__allocator" target="_self">mi_stl_allocator</a></td><td class="desc"><em>std::allocator</em> implementation for mimalloc for use in STL containers </td></tr> <tr id="row_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="group__cpp.html#structmi__stl__allocator" target="_self">mi_stl_allocator</a></td><td class="desc"><em class="arg">std::allocator</em> implementation for mimalloc for use in STL containers </td></tr>
</table> </table>
</div><!-- directory --> </div><!-- directory -->
</div><!-- contents --> </div><!-- contents -->
@ -109,7 +118,7 @@ $(document).ready(function(){initNavTree('annotated.html',''); initResizable();
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Performance</title> <title>mi-malloc: Performance</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('bench.html',''); initResizable(); }); $(function(){initNavTree('bench.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,26 +91,32 @@ $(document).ready(function(){initNavTree('bench.html',''); initResizable(); });
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="PageDoc"><div class="header"> <div><div class="header">
<div class="headertitle"> <div class="headertitle"><div class="title">Performance</div></div>
<div class="title">Performance </div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<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> <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>
<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> <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>
<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 technical report for detailed benchmark results. </p> <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>
</div></div><!-- contents --> </div></div><!-- contents -->
</div><!-- PageDoc --> </div><!-- PageDoc -->
</div><!-- doc-content --> </div><!-- doc-content -->
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Building</title> <title>mi-malloc: Building</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('build.html',''); initResizable(); }); $(function(){initNavTree('build.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,17 +91,23 @@ $(document).ready(function(){initNavTree('build.html',''); initResizable(); });
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="PageDoc"><div class="header"> <div><div class="header">
<div class="headertitle"> <div class="headertitle"><div class="title">Building</div></div>
<div class="title">Building </div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<div class="textblock"><p>Checkout the sources from GitHub: </p><div class="fragment"><div class="line">git clone https://github.com/microsoft/mimalloc</div> <div class="textblock"><p>Checkout the sources from GitHub: </p><div class="fragment"><div class="line">git clone https:<span class="comment">//github.com/microsoft/mimalloc</span></div>
</div><!-- fragment --><h2>Windows</h2> </div><!-- fragment --><h2>Windows</h2>
<p>Open <code>ide/vs2019/mimalloc.sln</code> in Visual Studio 2019 and build (or <code>ide/vs2017/mimalloc.sln</code>). The <code>mimalloc</code> project builds a static library (in <code>out/msvc-x64</code>), while the <code>mimalloc-override</code> project builds a DLL for overriding malloc in the entire program.</p> <p>Open <code>ide/vs2019/mimalloc.sln</code> in Visual Studio 2019 and build (or <code>ide/vs2017/mimalloc.sln</code>). The <code>mimalloc</code> project builds a static library (in <code>out/msvc-x64</code>), while the <code>mimalloc-override</code> project builds a DLL for overriding malloc in the entire program.</p>
<h2>macOS, Linux, BSD, etc.</h2> <h2>macOS, Linux, BSD, etc.</h2>
@ -130,7 +139,7 @@ $(document).ready(function(){initNavTree('build.html',''); initResizable(); });
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Data Structure Index</title> <title>mi-malloc: Data Structure Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('classes.html',''); initResizable(); }); $(function(){initNavTree('classes.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,20 +91,26 @@ $(document).ready(function(){initNavTree('classes.html',''); initResizable(); })
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="header"> <div class="header">
<div class="headertitle"> <div class="headertitle"><div class="title">Data Structure Index</div></div>
<div class="title">Data Structure Index</div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<div class="qindex"><a class="qindex" href="#letter_M">M</a></div> <div class="qindex"><a class="qindex" href="#letter_M">M</a></div>
<div class="classindex"> <div class="classindex">
<dl class="classindex even"> <dl class="classindex even">
<dt class="alphachar"><a name="letter_M">M</a></dt> <dt class="alphachar"><a id="letter_M" name="letter_M">M</a></dt>
<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> <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>
</div> </div>
</div><!-- contents --> </div><!-- contents -->
@ -109,7 +118,7 @@ $(document).ready(function(){initNavTree('classes.html',''); initResizable(); })
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

61
docs/clipboard.js Normal file
View file

@ -0,0 +1,61 @@
/**
The code below is based on the Doxygen Awesome project, see
https://github.com/jothepro/doxygen-awesome-css
MIT License
Copyright (c) 2021 - 2022 jothepro
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
let clipboard_title = "Copy to clipboard"
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>`
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>`
let clipboard_successDuration = 1000
$(function() {
if(navigator.clipboard) {
const fragments = document.getElementsByClassName("fragment")
for(const fragment of fragments) {
const clipboard_div = document.createElement("div")
clipboard_div.classList.add("clipboard")
clipboard_div.innerHTML = clipboard_icon
clipboard_div.title = clipboard_title
$(clipboard_div).click(function() {
const content = this.parentNode.cloneNode(true)
// filter out line number and folded fragments from file listings
content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() })
let text = content.textContent
// remove trailing newlines and trailing spaces from empty lines
text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'')
navigator.clipboard.writeText(text);
this.classList.add("success")
this.innerHTML = clipboard_successIcon
window.setTimeout(() => { // switch back to normal icon after timeout
this.classList.remove("success")
this.innerHTML = clipboard_icon
}, clipboard_successDuration);
})
fragment.insertBefore(clipboard_div, fragment.firstChild)
}
}
})

58
docs/cookie.js Normal file
View file

@ -0,0 +1,58 @@
/*!
Cookie helper functions
Copyright (c) 2023 Dimitri van Heesch
Released under MIT license.
*/
let Cookie = {
cookie_namespace: 'doxygen_',
readSetting(cookie,defVal) {
if (window.chrome) {
const val = localStorage.getItem(this.cookie_namespace+cookie) ||
sessionStorage.getItem(this.cookie_namespace+cookie);
if (val) return val;
} else {
let myCookie = this.cookie_namespace+cookie+"=";
if (document.cookie) {
const index = document.cookie.indexOf(myCookie);
if (index != -1) {
const valStart = index + myCookie.length;
let valEnd = document.cookie.indexOf(";", valStart);
if (valEnd == -1) {
valEnd = document.cookie.length;
}
return document.cookie.substring(valStart, valEnd);
}
}
}
return defVal;
},
writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete
if (window.chrome) {
if (days==0) {
sessionStorage.setItem(this.cookie_namespace+cookie,val);
} else {
localStorage.setItem(this.cookie_namespace+cookie,val);
}
} else {
let date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
const expiration = days!=0 ? "expires="+date.toGMTString()+";" : "";
document.cookie = this.cookie_namespace + cookie + "=" +
val + "; SameSite=Lax;" + expiration + "path=/";
}
},
eraseSetting(cookie) {
if (window.chrome) {
if (localStorage.getItem(this.cookie_namespace+cookie)) {
localStorage.removeItem(this.cookie_namespace+cookie);
} else if (sessionStorage.getItem(this.cookie_namespace+cookie)) {
sessionStorage.removeItem(this.cookie_namespace+cookie);
}
} else {
this.writeSetting(cookie,'',-1);
}
},
}

File diff suppressed because it is too large Load diff

28
docs/doxygen.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -22,100 +22,177 @@
@licend The above is the entire license notice for the JavaScript code in this file @licend The above is the entire license notice for the JavaScript code in this file
*/ */
function toggleVisibility(linkObj)
{ function toggleVisibility(linkObj) {
var base = $(linkObj).attr('id'); return dynsection.toggleVisibility(linkObj);
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
} }
function updateStripes() let dynsection = {
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
}
function toggleLevel(level) // helper function
{ updateStripes : function() {
$('table.directory tr').each(function() { $('table.directory tr').
var l = this.id.split('_').length-1; removeClass('even').filter(':visible:even').addClass('even');
var i = $('#img'+this.id.substring(3)); $('table.directory tr').
var a = $('#arr'+this.id.substring(3)); removeClass('odd').filter(':visible:odd').addClass('odd');
if (l<level+1) { },
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('&#9660;'); toggleVisibility : function(linkObj) {
$(this).show(); const base = $(linkObj).attr('id');
} else if (l==level+1) { const summary = $('#'+base+'-summary');
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed'); const content = $('#'+base+'-content');
a.html('&#9658;'); const trigger = $('#'+base+'-trigger');
$(this).show(); const src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else { } else {
$(this).hide(); content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
} }
}); return false;
updateStripes(); },
}
function toggleFolder(id) toggleLevel : function(level) {
{ $('table.directory tr').each(function() {
// the clicked row const l = this.id.split('_').length-1;
var currentRow = $('#row_'+id); const i = $('#img'+this.id.substring(3));
const a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('&#9660;');
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
a.html('&#9658;');
$(this).show();
} else {
$(this).hide();
}
});
this.updateStripes();
},
// all rows after the clicked row toggleFolder : function(id) {
var rows = currentRow.nextAll("tr"); // the clicked row
const currentRow = $('#row_'+id);
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub // all rows after the clicked row
const rows = currentRow.nextAll("tr");
// only match elements AFTER this one (can't hide elements before) const re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
var childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING // only match elements AFTER this one (can't hide elements before)
if (childRows.filter(':first').is(':visible')===true) { const childRows = rows.filter(function() { return this.id.match(re); });
// replace down arrow by right arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('&#9660;');
// replace down arrows by right arrows for child rows
var childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
updateStripes();
}
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
const currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
const currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('&#9660;');
// replace down arrows by right arrows for child rows
const childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
this.updateStripes();
},
function toggleInherit(id) toggleInherit : function(id) {
{ const rows = $('tr.inherit.'+id);
var rows = $('tr.inherit.'+id); const img = $('tr.inherit_header.'+id+' img');
var img = $('tr.inherit_header.'+id+' img'); const src = $(img).attr('src');
var src = $(img).attr('src'); if (rows.filter(':first').is(':visible')===true) {
if (rows.filter(':first').is(':visible')===true) { rows.css('display','none');
rows.css('display','none'); $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png'); } else {
} else { rows.css('display','table-row'); // using show() causes jump in firefox
rows.css('display','table-row'); // using show() causes jump in firefox $(img).attr('src',src.substring(0,src.length-10)+'open.png');
$(img).attr('src',src.substring(0,src.length-10)+'open.png'); }
} },
} };
let codefold = {
opened : true,
// in case HTML_COLORSTYLE is LIGHT or DARK the vars will be replaced, so we write them out explicitly and use double quotes
plusImg: [ "url('plus.svg')", "url('../../plus.svg')" ],
minusImg: [ "url('minus.svg')", "url('../../minus.svg')" ],
// toggle all folding blocks
toggle_all : function(relPath) {
if (this.opened) {
$('#fold_all').css('background-image',this.plusImg[relPath]);
$('div[id^=foldopen]').hide();
$('div[id^=foldclosed]').show();
} else {
$('#fold_all').css('background-image',this.minusImg[relPath]);
$('div[id^=foldopen]').show();
$('div[id^=foldclosed]').hide();
}
this.opened=!this.opened;
},
// toggle single folding block
toggle : function(id) {
$('#foldopen'+id).toggle();
$('#foldclosed'+id).toggle();
},
init : function(relPath) {
$('span[class=lineno]').css({
'padding-right':'4px',
'margin-right':'2px',
'display':'inline-block',
'width':'54px',
'background':'linear-gradient(#808080,#808080) no-repeat 46px/2px 100%'
});
// add global toggle to first line
$('span[class=lineno]:first').append('<span class="fold" id="fold_all" '+
'onclick="javascript:codefold.toggle_all('+relPath+');" '+
'style="background-image:'+this.minusImg[relPath]+';"></span>');
// add vertical lines to other rows
$('span[class=lineno]').not(':eq(0)').append('<span class="fold"></span>');
// add toggle controls to lines with fold divs
$('div[class=foldopen]').each(function() {
// extract specific id to use
const id = $(this).attr('id').replace('foldopen','');
// extract start and end foldable fragment attributes
const start = $(this).attr('data-start');
const end = $(this).attr('data-end');
// replace normal fold span with controls for the first line of a foldable fragment
$(this).find('span[class=fold]:first').replaceWith('<span class="fold" '+
'onclick="javascript:codefold.toggle(\''+id+'\');" '+
'style="background-image:'+codefold.minusImg[relPath]+';"></span>');
// append div for folded (closed) representation
$(this).after('<div id="foldclosed'+id+'" class="foldclosed" style="display:none;"></div>');
// extract the first line from the "open" section to represent closed content
const line = $(this).children().first().clone();
// remove any glow that might still be active on the original line
$(line).removeClass('glow');
if (start) {
// if line already ends with a start marker (e.g. trailing {), remove it
$(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),''));
}
// replace minus with plus symbol
$(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]);
// append ellipsis
$(line).append(' '+start+'<a href="javascript:codefold.toggle(\''+id+'\')">&#8230;</a>'+end);
// insert constructed line into closed div
$('#foldclosed'+id).html(line);
});
},
};
/* @license-end */ /* @license-end */

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Environment Options</title> <title>mi-malloc: Environment Options</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('environment.html',''); initResizable(); }); $(function(){initNavTree('environment.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,34 +91,48 @@ $(document).ready(function(){initNavTree('environment.html',''); initResizable()
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="PageDoc"><div class="header"> <div><div class="header">
<div class="headertitle"> <div class="headertitle"><div class="title">Environment Options</div></div>
<div class="title">Environment Options </div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<div class="textblock"><p>You can set further options either programmatically (using <a href="https://microsoft.github.io/mimalloc/group__options.html"><code>mi_option_set</code></a>), or via environment variables.</p> <div class="textblock"><p>You can set further options either programmatically (using <a href="https://microsoft.github.io/mimalloc/group__options.html"><code>mi_option_set</code></a>), or via environment variables:</p>
<ul> <ul>
<li><code>MIMALLOC_SHOW_STATS=1</code>: show statistics when the program terminates.</li> <li><code>MIMALLOC_SHOW_STATS=1</code>: show statistics when the program terminates.</li>
<li><code>MIMALLOC_VERBOSE=1</code>: show verbose messages.</li> <li><code>MIMALLOC_VERBOSE=1</code>: show verbose messages.</li>
<li><code>MIMALLOC_SHOW_ERRORS=1</code>: show error and warning messages.</li> <li><code>MIMALLOC_SHOW_ERRORS=1</code>: show error and warning messages.</li>
<li><code>MIMALLOC_PAGE_RESET=0</code>: by default, mimalloc will reset (or purge) OS pages when not in use to signal to the OS that the underlying physical memory can be reused. This can reduce memory fragmentation in long running (server) programs. By setting it to <code>0</code> no such page resets will be done which can improve performance for programs that are not long running. As an alternative, the <code>MIMALLOC_RESET_DELAY=</code>&lt;msecs&gt; can be set higher (100ms by default) to make the page reset occur less frequently instead of turning it off completely.</li>
<li><code>MIMALLOC_LARGE_OS_PAGES=1</code>: use large OS pages (2MiB) when available; for some workloads this can significantly improve performance. Use <code>MIMALLOC_VERBOSE</code> to check if the large OS pages are enabled &ndash; usually one needs to explicitly allow large OS pages (as on <a href="https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/enable-the-lock-pages-in-memory-option-windows?view=sql-server-2017">Windows</a> and <a href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/tuning_and_optimizing_red_hat_enterprise_linux_for_oracle_9i_and_10g_databases/sect-oracle_9i_and_10g_tuning_guide-large_memory_optimization_big_pages_and_huge_pages-configuring_huge_pages_in_red_hat_enterprise_linux_4_or_5">Linux</a>). However, sometimes the OS is very slow to reserve contiguous physical memory for large OS pages so use with care on systems that can have fragmented memory (for that reason, we generally recommend to use <code>MIMALLOC_RESERVE_HUGE_OS_PAGES</code> instead when possible).</li>
<li><code>MIMALLOC_RESERVE_HUGE_OS_PAGES=N</code>: where N is the number of 1GiB <em>huge</em> OS pages. This reserves the huge pages at startup and sometimes this can give a large (latency) performance improvement on big workloads. Usually it is better to not use <code>MIMALLOC_LARGE_OS_PAGES</code> in combination with this setting. Just like large OS pages, use with care as reserving contiguous physical memory can take a long time when memory is fragmented (but reserving the huge pages is done at startup only once). Note that we usually need to explicitly enable huge OS pages (as on <a href="https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/enable-the-lock-pages-in-memory-option-windows?view=sql-server-2017">Windows</a> and <a href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/tuning_and_optimizing_red_hat_enterprise_linux_for_oracle_9i_and_10g_databases/sect-oracle_9i_and_10g_tuning_guide-large_memory_optimization_big_pages_and_huge_pages-configuring_huge_pages_in_red_hat_enterprise_linux_4_or_5">Linux</a>)). With huge OS pages, it may be beneficial to set the setting <code>MIMALLOC_EAGER_COMMIT_DELAY=N</code> (<code>N</code> is 1 by default) to delay the initial <code>N</code> segments (of 4MiB) of a thread to not allocate in the huge OS pages; this prevents threads that are short lived and allocate just a little to take up space in the huge OS page area (which cannot be reset).</li>
<li><code>MIMALLOC_RESERVE_HUGE_OS_PAGES_AT=N</code>: where N is the numa node. This reserves the huge pages at a specific numa node. (<code>N</code> is -1 by default to reserve huge pages evenly among the given number of numa nodes (or use the available ones as detected))</li>
</ul> </ul>
<p>Use caution when using <code>fork</code> in combination with either large or huge OS pages: on a fork, the OS uses copy-on-write for all pages in the original process including the huge OS pages. When any memory is now written in that area, the OS will copy the entire 1GiB huge page (or 2MiB large page) which can cause the memory usage to grow in big increments. </p> <p>Advanced options:</p>
<ul>
<li><code>MIMALLOC_ARENA_EAGER_COMMIT=2</code>: turns on eager commit for the large arenas (usually 1GiB) from which mimalloc allocates segments and pages. Set this to 2 (default) to only enable this on overcommit systems (e.g. Linux). Set this to 1 to enable explicitly on other systems as well (like Windows or macOS) which may improve performance (as the whole arena is committed at once). Note that eager commit only increases the commit but not the actual the peak resident set (rss) so it is generally ok to enable this.</li>
<li><code>MIMALLOC_PURGE_DELAY=N</code>: the delay in <code>N</code> milli-seconds (by default <code>10</code>) after which mimalloc will purge OS pages that are not in use. This signals to the OS that the underlying physical memory can be reused which can reduce memory fragmentation especially in long running (server) programs. Setting <code>N</code> to <code>0</code> purges immediately when a page becomes unused which can improve memory usage but also decreases performance. Setting <code>N</code> to a higher value like <code>100</code> can improve performance (sometimes by a lot) at the cost of potentially using more memory at times. Setting it to <code>-1</code> disables purging completely.</li>
<li><code>MIMALLOC_PURGE_DECOMMITS=1</code>: By default "purging" memory means unused memory is decommitted (<code>MEM_DECOMMIT</code> on Windows, <code>MADV_DONTNEED</code> (which decresease rss immediately) on <code>mmap</code> systems). Set this to 0 to instead "reset" unused memory on a purge (<code>MEM_RESET</code> on Windows, generally <code>MADV_FREE</code> (which does not decrease rss immediately) on <code>mmap</code> systems). Mimalloc generally does not "free" OS memory but only "purges" OS memory, in other words, it tries to keep virtual address ranges and decommits within those ranges (to make the underlying physical memory available to other processes).</li>
</ul>
<p>Further options for large workloads and services:</p>
<ul>
<li><code>MIMALLOC_USE_NUMA_NODES=N</code>: pretend there are at most <code>N</code> NUMA nodes. If not set, the actual NUMA nodes are detected at runtime. Setting <code>N</code> to 1 may avoid problems in some virtual environments. Also, setting it to a lower number than the actual NUMA nodes is fine and will only cause threads to potentially allocate more memory across actual NUMA nodes (but this can happen in any case as NUMA local allocation is always a best effort but not guaranteed).</li>
<li><code>MIMALLOC_ALLOW_LARGE_OS_PAGES=1</code>: use large OS pages (2 or 4MiB) when available; for some workloads this can significantly improve performance. When this option is disabled, it also disables transparent huge pages (THP) for the process (on Linux and Android). Use <code>MIMALLOC_VERBOSE</code> to check if the large OS pages are enabled &ndash; usually one needs to explicitly give permissions for large OS pages (as on <a href="https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/enable-the-lock-pages-in-memory-option-windows?view=sql-server-2017">Windows</a> and <a href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/tuning_and_optimizing_red_hat_enterprise_linux_for_oracle_9i_and_10g_databases/sect-oracle_9i_and_10g_tuning_guide-large_memory_optimization_big_pages_and_huge_pages-configuring_huge_pages_in_red_hat_enterprise_linux_4_or_5">Linux</a>). However, sometimes the OS is very slow to reserve contiguous physical memory for large OS pages so use with care on systems that can have fragmented memory (for that reason, we generally recommend to use <code>MIMALLOC_RESERVE_HUGE_OS_PAGES</code> instead whenever possible).</li>
<li><code>MIMALLOC_RESERVE_HUGE_OS_PAGES=N</code>: where <code>N</code> is the number of 1GiB <em>huge</em> OS pages. This reserves the huge pages at startup and sometimes this can give a large (latency) performance improvement on big workloads. Usually it is better to not use <code>MIMALLOC_ALLOW_LARGE_OS_PAGES=1</code> in combination with this setting. Just like large OS pages, use with care as reserving contiguous physical memory can take a long time when memory is fragmented (but reserving the huge pages is done at startup only once). Note that we usually need to explicitly give permission for huge OS pages (as on <a href="https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/enable-the-lock-pages-in-memory-option-windows?view=sql-server-2017">Windows</a> and <a href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/tuning_and_optimizing_red_hat_enterprise_linux_for_oracle_9i_and_10g_databases/sect-oracle_9i_and_10g_tuning_guide-large_memory_optimization_big_pages_and_huge_pages-configuring_huge_pages_in_red_hat_enterprise_linux_4_or_5">Linux</a>)). With huge OS pages, it may be beneficial to set the setting <code>MIMALLOC_EAGER_COMMIT_DELAY=N</code> (<code>N</code> is 1 by default) to delay the initial <code>N</code> segments (of 4MiB) of a thread to not allocate in the huge OS pages; this prevents threads that are short lived and allocate just a little to take up space in the huge OS page area (which cannot be purged as huge OS pages are pinned to physical memory). The huge pages are usually allocated evenly among NUMA nodes. We can use <code>MIMALLOC_RESERVE_HUGE_OS_PAGES_AT=N</code> where <code>N</code> is the numa node (starting at 0) to allocate all the huge pages at a specific numa node instead.</li>
</ul>
<p>Use caution when using <code>fork</code> in combination with either large or huge OS pages: on a fork, the OS uses copy-on-write for all pages in the original process including the huge OS pages. When any memory is now written in that area, the OS will copy the entire 1GiB huge page (or 2MiB large page) which can cause the memory usage to grow in large increments. </p>
</div></div><!-- contents --> </div></div><!-- contents -->
</div><!-- PageDoc --> </div><!-- PageDoc -->
</div><!-- doc-content --> </div><!-- doc-content -->
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Data Fields</title> <title>mi-malloc: Data Fields</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('functions.html',''); initResizable(); }); $(function(){initNavTree('functions.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,35 +91,34 @@ $(document).ready(function(){initNavTree('functions.html',''); initResizable();
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="contents"> <div class="contents">
<div class="textblock">Here is a list of all struct and union fields with links to the structures/unions they belong to:</div><ul> <div class="textblock">Here is a list of all struct and union fields with links to the structures/unions they belong to:</div><ul>
<li>block_size <li>block_size&#160;:&#160;<a class="el" href="group__analysis.html#a332a6c14d736a99699d5453a1cb04b41">mi_heap_area_t</a></li>
: <a class="el" href="group__analysis.html#a332a6c14d736a99699d5453a1cb04b41">mi_heap_area_t</a> <li>blocks&#160;:&#160;<a class="el" href="group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8">mi_heap_area_t</a></li>
</li> <li>committed&#160;:&#160;<a class="el" href="group__analysis.html#ab47526df656d8837ec3e97f11b83f835">mi_heap_area_t</a></li>
<li>blocks <li>full_block_size&#160;:&#160;<a class="el" href="group__analysis.html#ab53664e31d7fe2564f8d42041ef75cb3">mi_heap_area_t</a></li>
: <a class="el" href="group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8">mi_heap_area_t</a> <li>heap_tag&#160;:&#160;<a class="el" href="group__analysis.html#a2b7a0c92ece8daf46b558efc990ebdc1">mi_heap_area_t</a></li>
</li> <li>reserved&#160;:&#160;<a class="el" href="group__analysis.html#ae848a3e6840414891035423948ca0383">mi_heap_area_t</a></li>
<li>committed <li>used&#160;:&#160;<a class="el" href="group__analysis.html#ab820302c5cd0df133eb8e51650a008b4">mi_heap_area_t</a></li>
: <a class="el" href="group__analysis.html#ab47526df656d8837ec3e97f11b83f835">mi_heap_area_t</a>
</li>
<li>reserved
: <a class="el" href="group__analysis.html#ae848a3e6840414891035423948ca0383">mi_heap_area_t</a>
</li>
<li>used
: <a class="el" href="group__analysis.html#ab820302c5cd0df133eb8e51650a008b4">mi_heap_area_t</a>
</li>
</ul> </ul>
</div><!-- contents --> </div><!-- contents -->
</div><!-- doc-content --> </div><!-- doc-content -->
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Data Fields - Variables</title> <title>mi-malloc: Data Fields - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('functions_vars.html',''); initResizable(); }); $(function(){initNavTree('functions_vars.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,35 +91,34 @@ $(document).ready(function(){initNavTree('functions_vars.html',''); initResizabl
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="contents"> <div class="contents">
&#160;<ul> <div class="textblock">Here is a list of all variables with links to the structures/unions they belong to:</div><ul>
<li>block_size <li>block_size&#160;:&#160;<a class="el" href="group__analysis.html#a332a6c14d736a99699d5453a1cb04b41">mi_heap_area_t</a></li>
: <a class="el" href="group__analysis.html#a332a6c14d736a99699d5453a1cb04b41">mi_heap_area_t</a> <li>blocks&#160;:&#160;<a class="el" href="group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8">mi_heap_area_t</a></li>
</li> <li>committed&#160;:&#160;<a class="el" href="group__analysis.html#ab47526df656d8837ec3e97f11b83f835">mi_heap_area_t</a></li>
<li>blocks <li>full_block_size&#160;:&#160;<a class="el" href="group__analysis.html#ab53664e31d7fe2564f8d42041ef75cb3">mi_heap_area_t</a></li>
: <a class="el" href="group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8">mi_heap_area_t</a> <li>heap_tag&#160;:&#160;<a class="el" href="group__analysis.html#a2b7a0c92ece8daf46b558efc990ebdc1">mi_heap_area_t</a></li>
</li> <li>reserved&#160;:&#160;<a class="el" href="group__analysis.html#ae848a3e6840414891035423948ca0383">mi_heap_area_t</a></li>
<li>committed <li>used&#160;:&#160;<a class="el" href="group__analysis.html#ab820302c5cd0df133eb8e51650a008b4">mi_heap_area_t</a></li>
: <a class="el" href="group__analysis.html#ab47526df656d8837ec3e97f11b83f835">mi_heap_area_t</a>
</li>
<li>reserved
: <a class="el" href="group__analysis.html#ae848a3e6840414891035423948ca0383">mi_heap_area_t</a>
</li>
<li>used
: <a class="el" href="group__analysis.html#ab820302c5cd0df133eb8e51650a008b4">mi_heap_area_t</a>
</li>
</ul> </ul>
</div><!-- contents --> </div><!-- contents -->
</div><!-- doc-content --> </div><!-- doc-content -->
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Aligned Allocation</title> <title>mi-malloc: Aligned Allocation</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('group__aligned.html',''); initResizable(); }); $(function(){initNavTree('group__aligned.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,180 +91,142 @@ $(document).ready(function(){initNavTree('group__aligned.html',''); initResizabl
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div> <a href="#func-members">Functions</a> </div>
<div class="headertitle"> <div class="headertitle"><div class="title">Aligned Allocation</div></div>
<div class="title">Aligned Allocation</div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<p>Allocating aligned memory blocks. <p>Allocating aligned memory blocks.
<a href="#details">More...</a></p> <a href="#details">More...</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga83c03016066b438f51a8095e9140be06"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__aligned.html#ga83c03016066b438f51a8095e9140be06">MI_ALIGNMENT_MAX</a></td></tr>
<tr class="memdesc:ga83c03016066b438f51a8095e9140be06"><td class="mdescLeft">&#160;</td><td class="mdescRight">The maximum supported alignment size (currently 1MiB). <a href="group__aligned.html#ga83c03016066b438f51a8095e9140be06">More...</a><br /></td></tr>
<tr class="separator:ga83c03016066b438f51a8095e9140be06"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr> Functions</h2></td></tr>
<tr class="memitem:ga68930196751fa2cca9e1fd0d71bade56"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__aligned.html#ga68930196751fa2cca9e1fd0d71bade56">mi_malloc_aligned</a> (size_t size, size_t alignment)</td></tr> <tr class="memitem:ga69578ff1a98ca16e1dcd02c0995cd65c" id="r_ga69578ff1a98ca16e1dcd02c0995cd65c"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga69578ff1a98ca16e1dcd02c0995cd65c">mi_malloc_aligned</a> (size_t size, size_t alignment)</td></tr>
<tr class="memdesc:ga68930196751fa2cca9e1fd0d71bade56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em>size</em> bytes aligned by <em>alignment</em>. <a href="group__aligned.html#ga68930196751fa2cca9e1fd0d71bade56">More...</a><br /></td></tr> <tr class="memdesc:ga69578ff1a98ca16e1dcd02c0995cd65c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em class="arg">size</em> bytes aligned by <em class="arg">alignment</em>. <br /></td></tr>
<tr class="separator:ga68930196751fa2cca9e1fd0d71bade56"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga69578ff1a98ca16e1dcd02c0995cd65c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0cadbcf5b89a7b6fb171bc8df8734819"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__aligned.html#ga0cadbcf5b89a7b6fb171bc8df8734819">mi_zalloc_aligned</a> (size_t size, size_t alignment)</td></tr> <tr class="memitem:gaac7d0beb782f9b9ac31f47492b130f82" id="r_gaac7d0beb782f9b9ac31f47492b130f82"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaac7d0beb782f9b9ac31f47492b130f82">mi_zalloc_aligned</a> (size_t size, size_t alignment)</td></tr>
<tr class="separator:ga0cadbcf5b89a7b6fb171bc8df8734819"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gaac7d0beb782f9b9ac31f47492b130f82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga53dddb4724042a90315b94bc268fb4c9"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__aligned.html#ga53dddb4724042a90315b94bc268fb4c9">mi_calloc_aligned</a> (size_t count, size_t size, size_t alignment)</td></tr> <tr class="memitem:ga424ef386fb1f9f8e0a86ab53f16eaaf1" id="r_ga424ef386fb1f9f8e0a86ab53f16eaaf1"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga424ef386fb1f9f8e0a86ab53f16eaaf1">mi_calloc_aligned</a> (size_t count, size_t size, size_t alignment)</td></tr>
<tr class="separator:ga53dddb4724042a90315b94bc268fb4c9"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga424ef386fb1f9f8e0a86ab53f16eaaf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4028d1cf4aa4c87c880747044a8322ae"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__aligned.html#ga4028d1cf4aa4c87c880747044a8322ae">mi_realloc_aligned</a> (void *p, size_t newsize, size_t alignment)</td></tr> <tr class="memitem:ga5d7a46d054b4d7abe9d8d2474add2edf" id="r_ga5d7a46d054b4d7abe9d8d2474add2edf"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga5d7a46d054b4d7abe9d8d2474add2edf">mi_realloc_aligned</a> (void *p, size_t newsize, size_t alignment)</td></tr>
<tr class="separator:ga4028d1cf4aa4c87c880747044a8322ae"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga5d7a46d054b4d7abe9d8d2474add2edf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5850da130c936bd77db039dcfbc8295d"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__aligned.html#ga5850da130c936bd77db039dcfbc8295d">mi_malloc_aligned_at</a> (size_t size, size_t alignment, size_t offset)</td></tr> <tr class="memitem:ga2022f71b95a7cd6cce1b6e07752ae8ca" id="r_ga2022f71b95a7cd6cce1b6e07752ae8ca"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga2022f71b95a7cd6cce1b6e07752ae8ca">mi_malloc_aligned_at</a> (size_t size, size_t alignment, size_t offset)</td></tr>
<tr class="memdesc:ga5850da130c936bd77db039dcfbc8295d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em>size</em> bytes aligned by <em>alignment</em> at a specified <em>offset</em>. <a href="group__aligned.html#ga5850da130c936bd77db039dcfbc8295d">More...</a><br /></td></tr> <tr class="memdesc:ga2022f71b95a7cd6cce1b6e07752ae8ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em class="arg">size</em> bytes aligned by <em class="arg">alignment</em> at a specified <em class="arg">offset</em>. <br /></td></tr>
<tr class="separator:ga5850da130c936bd77db039dcfbc8295d"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga2022f71b95a7cd6cce1b6e07752ae8ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5f8c2353766db522565e642fafd8a3f8"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__aligned.html#ga5f8c2353766db522565e642fafd8a3f8">mi_zalloc_aligned_at</a> (size_t size, size_t alignment, size_t offset)</td></tr> <tr class="memitem:ga7c1778805ce50ebbf02ccbd5e39d5dba" id="r_ga7c1778805ce50ebbf02ccbd5e39d5dba"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga7c1778805ce50ebbf02ccbd5e39d5dba">mi_zalloc_aligned_at</a> (size_t size, size_t alignment, size_t offset)</td></tr>
<tr class="separator:ga5f8c2353766db522565e642fafd8a3f8"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga7c1778805ce50ebbf02ccbd5e39d5dba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga08647c4593f3b2eef24a919a73eba3a3"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__aligned.html#ga08647c4593f3b2eef24a919a73eba3a3">mi_calloc_aligned_at</a> (size_t count, size_t size, size_t alignment, size_t offset)</td></tr> <tr class="memitem:ga977f96bd2c5c141bcd70e6685c90d6c3" id="r_ga977f96bd2c5c141bcd70e6685c90d6c3"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga977f96bd2c5c141bcd70e6685c90d6c3">mi_calloc_aligned_at</a> (size_t count, size_t size, size_t alignment, size_t offset)</td></tr>
<tr class="separator:ga08647c4593f3b2eef24a919a73eba3a3"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga977f96bd2c5c141bcd70e6685c90d6c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf66a9ae6c6f08bd6be6fb6ea771faffb"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__aligned.html#gaf66a9ae6c6f08bd6be6fb6ea771faffb">mi_realloc_aligned_at</a> (void *p, size_t newsize, size_t alignment, size_t offset)</td></tr> <tr class="memitem:gad06dcf2bb8faadb2c8ea61ee5d24bbf6" id="r_gad06dcf2bb8faadb2c8ea61ee5d24bbf6"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gad06dcf2bb8faadb2c8ea61ee5d24bbf6">mi_realloc_aligned_at</a> (void *p, size_t newsize, size_t alignment, size_t offset)</td></tr>
<tr class="separator:gaf66a9ae6c6f08bd6be6fb6ea771faffb"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gad06dcf2bb8faadb2c8ea61ee5d24bbf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table> </table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Allocating aligned memory blocks. </p> <p>Allocating aligned memory blocks. </p>
<h2 class="groupheader">Macro Definition Documentation</h2> <p>Note that <code>alignment</code> always follows <code>size</code> for consistency with the unaligned allocation API, but unfortunately this differs from <code>posix_memalign</code> and <code>aligned_alloc</code> in the C library. </p>
<a id="ga83c03016066b438f51a8095e9140be06"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga83c03016066b438f51a8095e9140be06">&#9670;&nbsp;</a></span>MI_ALIGNMENT_MAX</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MI_ALIGNMENT_MAX</td>
</tr>
</table>
</div><div class="memdoc">
<p>The maximum supported alignment size (currently 1MiB). </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2> <h2 class="groupheader">Function Documentation</h2>
<a id="ga53dddb4724042a90315b94bc268fb4c9"></a> <a id="ga424ef386fb1f9f8e0a86ab53f16eaaf1" name="ga424ef386fb1f9f8e0a86ab53f16eaaf1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga53dddb4724042a90315b94bc268fb4c9">&#9670;&nbsp;</a></span>mi_calloc_aligned()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga424ef386fb1f9f8e0a86ab53f16eaaf1">&#9670;&#160;</a></span>mi_calloc_aligned()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_calloc_aligned </td> <td class="memname">void * mi_calloc_aligned </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>count</em></span>, </td>
<td class="paramname"><em>count</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
<td class="paramname"><em>size</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>&#160;)</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga08647c4593f3b2eef24a919a73eba3a3"></a> <a id="ga977f96bd2c5c141bcd70e6685c90d6c3" name="ga977f96bd2c5c141bcd70e6685c90d6c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga08647c4593f3b2eef24a919a73eba3a3">&#9670;&nbsp;</a></span>mi_calloc_aligned_at()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga977f96bd2c5c141bcd70e6685c90d6c3">&#9670;&#160;</a></span>mi_calloc_aligned_at()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_calloc_aligned_at </td> <td class="memname">void * mi_calloc_aligned_at </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>count</em></span>, </td>
<td class="paramname"><em>count</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
<td class="paramname"><em>size</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>, </td>
<td class="paramname"><em>alignment</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>offset</em></span>&#160;)</td>
<td class="paramname"><em>offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga68930196751fa2cca9e1fd0d71bade56"></a> <a id="ga69578ff1a98ca16e1dcd02c0995cd65c" name="ga69578ff1a98ca16e1dcd02c0995cd65c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga68930196751fa2cca9e1fd0d71bade56">&#9670;&nbsp;</a></span>mi_malloc_aligned()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga69578ff1a98ca16e1dcd02c0995cd65c">&#9670;&#160;</a></span>mi_malloc_aligned()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_malloc_aligned </td> <td class="memname">void * mi_malloc_aligned </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
<td class="paramname"><em>size</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>&#160;)</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Allocate <em>size</em> bytes aligned by <em>alignment</em>. </p> <p>Allocate <em class="arg">size</em> bytes aligned by <em class="arg">alignment</em>. </p>
<dl class="params"><dt>Parameters</dt><dd> <dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">size</td><td>number of bytes to allocate. </td></tr> <tr><td class="paramname">size</td><td>number of bytes to allocate. </td></tr>
<tr><td class="paramname">alignment</td><td>the minimal alignment of the allocated memory. Must be less than <a class="el" href="group__aligned.html#ga83c03016066b438f51a8095e9140be06" title="The maximum supported alignment size (currently 1MiB).">MI_ALIGNMENT_MAX</a>. </td></tr> <tr><td class="paramname">alignment</td><td>the minimal alignment of the allocated memory. </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>pointer to the allocated memory or <em>NULL</em> if out of memory. The returned pointer is aligned by <em>alignment</em>, i.e. <code>(uintptr_t)p % alignment == 0</code>.</dd></dl> <dl class="section return"><dt>Returns</dt><dd>pointer to the allocated memory or <em class="arg">NULL</em> if out of memory, or if the alignment is not a power of 2 (including 0). The <em class="arg">size</em> is unrestricted (and does not have to be an integral multiple of the <em class="arg">alignment</em>). The returned pointer is aligned by <em class="arg">alignment</em>, i.e. <code>(uintptr_t)p % alignment == 0</code>. Returns a unique pointer if called with <em class="arg">size</em> 0.</dd></dl>
<p>Returns a unique pointer if called with <em>size</em> 0. </p><dl class="section see"><dt>See also</dt><dd><a href="https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/aligned-malloc?view=vs-2017">_aligned_malloc</a> (on Windows) </dd> <p>Note that <code>alignment</code> always follows <code>size</code> for consistency with the unaligned allocation API, but unfortunately this differs from <code>posix_memalign</code> and <code>aligned_alloc</code> in the C library.</p>
<dl class="section see"><dt>See also</dt><dd><a href="https://en.cppreference.com/w/c/memory/aligned_alloc">aligned_alloc</a> (in the standard C11 library, with switched arguments!) </dd>
<dd>
<a href="https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/aligned-malloc?view=vs-2017">_aligned_malloc</a> (on Windows) </dd>
<dd> <dd>
<a href="http://man.openbsd.org/reallocarray">aligned_alloc</a> (on BSD, with switched arguments!) </dd> <a href="http://man.openbsd.org/reallocarray">aligned_alloc</a> (on BSD, with switched arguments!) </dd>
<dd> <dd>
@ -271,182 +236,142 @@ Functions</h2></td></tr>
</div> </div>
</div> </div>
<a id="ga5850da130c936bd77db039dcfbc8295d"></a> <a id="ga2022f71b95a7cd6cce1b6e07752ae8ca" name="ga2022f71b95a7cd6cce1b6e07752ae8ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5850da130c936bd77db039dcfbc8295d">&#9670;&nbsp;</a></span>mi_malloc_aligned_at()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga2022f71b95a7cd6cce1b6e07752ae8ca">&#9670;&#160;</a></span>mi_malloc_aligned_at()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_malloc_aligned_at </td> <td class="memname">void * mi_malloc_aligned_at </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
<td class="paramname"><em>size</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>, </td>
<td class="paramname"><em>alignment</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>offset</em></span>&#160;)</td>
<td class="paramname"><em>offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Allocate <em>size</em> bytes aligned by <em>alignment</em> at a specified <em>offset</em>. </p> <p>Allocate <em class="arg">size</em> bytes aligned by <em class="arg">alignment</em> at a specified <em class="arg">offset</em>. </p>
<dl class="params"><dt>Parameters</dt><dd> <dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">size</td><td>number of bytes to allocate. </td></tr> <tr><td class="paramname">size</td><td>number of bytes to allocate. </td></tr>
<tr><td class="paramname">alignment</td><td>the minimal alignment of the allocated memory at <em>offset</em>. </td></tr> <tr><td class="paramname">alignment</td><td>the minimal alignment of the allocated memory at <em class="arg">offset</em>. </td></tr>
<tr><td class="paramname">offset</td><td>the offset that should be aligned. </td></tr> <tr><td class="paramname">offset</td><td>the offset that should be aligned. </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>pointer to the allocated memory or <em>NULL</em> if out of memory. The returned pointer is aligned by <em>alignment</em> at <em>offset</em>, i.e. <code>((uintptr_t)p + offset) % alignment == 0</code>.</dd></dl> <dl class="section return"><dt>Returns</dt><dd>pointer to the allocated memory or <em class="arg">NULL</em> if out of memory, or if the alignment is not a power of 2 (including 0). The <em class="arg">size</em> is unrestricted (and does not have to be an integral multiple of the <em class="arg">alignment</em>). The returned pointer is aligned by <em class="arg">alignment</em>, i.e. <code>(uintptr_t)p % alignment == 0</code>. Returns a unique pointer if called with <em class="arg">size</em> 0.</dd></dl>
<p>Returns a unique pointer if called with <em>size</em> 0. </p><dl class="section see"><dt>See also</dt><dd><a href="https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/aligned-offset-malloc?view=vs-2017">_aligned_offset_malloc</a> (on Windows) </dd></dl> <dl class="section see"><dt>See also</dt><dd><a href="https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/aligned-offset-malloc?view=vs-2017">_aligned_offset_malloc</a> (on Windows) </dd></dl>
</div> </div>
</div> </div>
<a id="ga4028d1cf4aa4c87c880747044a8322ae"></a> <a id="ga5d7a46d054b4d7abe9d8d2474add2edf" name="ga5d7a46d054b4d7abe9d8d2474add2edf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4028d1cf4aa4c87c880747044a8322ae">&#9670;&nbsp;</a></span>mi_realloc_aligned()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga5d7a46d054b4d7abe9d8d2474add2edf">&#9670;&#160;</a></span>mi_realloc_aligned()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_realloc_aligned </td> <td class="memname">void * mi_realloc_aligned </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newsize</em></span>, </td>
<td class="paramname"><em>newsize</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>&#160;)</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="gaf66a9ae6c6f08bd6be6fb6ea771faffb"></a> <a id="gad06dcf2bb8faadb2c8ea61ee5d24bbf6" name="gad06dcf2bb8faadb2c8ea61ee5d24bbf6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf66a9ae6c6f08bd6be6fb6ea771faffb">&#9670;&nbsp;</a></span>mi_realloc_aligned_at()</h2> <h2 class="memtitle"><span class="permalink"><a href="#gad06dcf2bb8faadb2c8ea61ee5d24bbf6">&#9670;&#160;</a></span>mi_realloc_aligned_at()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_realloc_aligned_at </td> <td class="memname">void * mi_realloc_aligned_at </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newsize</em></span>, </td>
<td class="paramname"><em>newsize</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>, </td>
<td class="paramname"><em>alignment</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>offset</em></span>&#160;)</td>
<td class="paramname"><em>offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga0cadbcf5b89a7b6fb171bc8df8734819"></a> <a id="gaac7d0beb782f9b9ac31f47492b130f82" name="gaac7d0beb782f9b9ac31f47492b130f82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0cadbcf5b89a7b6fb171bc8df8734819">&#9670;&nbsp;</a></span>mi_zalloc_aligned()</h2> <h2 class="memtitle"><span class="permalink"><a href="#gaac7d0beb782f9b9ac31f47492b130f82">&#9670;&#160;</a></span>mi_zalloc_aligned()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_zalloc_aligned </td> <td class="memname">void * mi_zalloc_aligned </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
<td class="paramname"><em>size</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>&#160;)</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga5f8c2353766db522565e642fafd8a3f8"></a> <a id="ga7c1778805ce50ebbf02ccbd5e39d5dba" name="ga7c1778805ce50ebbf02ccbd5e39d5dba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5f8c2353766db522565e642fafd8a3f8">&#9670;&nbsp;</a></span>mi_zalloc_aligned_at()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga7c1778805ce50ebbf02ccbd5e39d5dba">&#9670;&#160;</a></span>mi_zalloc_aligned_at()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_zalloc_aligned_at </td> <td class="memname">void * mi_zalloc_aligned_at </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
<td class="paramname"><em>size</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>, </td>
<td class="paramname"><em>alignment</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>offset</em></span>&#160;)</td>
<td class="paramname"><em>offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
@ -458,7 +383,7 @@ Functions</h2></td></tr>
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -1,12 +1,11 @@
var group__aligned = var group__aligned =
[ [
[ "MI_ALIGNMENT_MAX", "group__aligned.html#ga83c03016066b438f51a8095e9140be06", null ], [ "mi_calloc_aligned", "group__aligned.html#ga424ef386fb1f9f8e0a86ab53f16eaaf1", null ],
[ "mi_calloc_aligned", "group__aligned.html#ga53dddb4724042a90315b94bc268fb4c9", null ], [ "mi_calloc_aligned_at", "group__aligned.html#ga977f96bd2c5c141bcd70e6685c90d6c3", null ],
[ "mi_calloc_aligned_at", "group__aligned.html#ga08647c4593f3b2eef24a919a73eba3a3", null ], [ "mi_malloc_aligned", "group__aligned.html#ga69578ff1a98ca16e1dcd02c0995cd65c", null ],
[ "mi_malloc_aligned", "group__aligned.html#ga68930196751fa2cca9e1fd0d71bade56", null ], [ "mi_malloc_aligned_at", "group__aligned.html#ga2022f71b95a7cd6cce1b6e07752ae8ca", null ],
[ "mi_malloc_aligned_at", "group__aligned.html#ga5850da130c936bd77db039dcfbc8295d", null ], [ "mi_realloc_aligned", "group__aligned.html#ga5d7a46d054b4d7abe9d8d2474add2edf", null ],
[ "mi_realloc_aligned", "group__aligned.html#ga4028d1cf4aa4c87c880747044a8322ae", null ], [ "mi_realloc_aligned_at", "group__aligned.html#gad06dcf2bb8faadb2c8ea61ee5d24bbf6", null ],
[ "mi_realloc_aligned_at", "group__aligned.html#gaf66a9ae6c6f08bd6be6fb6ea771faffb", null ], [ "mi_zalloc_aligned", "group__aligned.html#gaac7d0beb782f9b9ac31f47492b130f82", null ],
[ "mi_zalloc_aligned", "group__aligned.html#ga0cadbcf5b89a7b6fb171bc8df8734819", null ], [ "mi_zalloc_aligned_at", "group__aligned.html#ga7c1778805ce50ebbf02ccbd5e39d5dba", null ]
[ "mi_zalloc_aligned_at", "group__aligned.html#ga5f8c2353766db522565e642fafd8a3f8", null ]
]; ];

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Heap Introspection</title> <title>mi-malloc: Heap Introspection</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('group__analysis.html',''); initResizable(); }); $(function(){initNavTree('group__analysis.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,9 +91,16 @@ $(document).ready(function(){initNavTree('group__analysis.html',''); initResizab
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="header"> <div class="header">
@ -98,46 +108,48 @@ $(document).ready(function(){initNavTree('group__analysis.html',''); initResizab
<a href="#nested-classes">Data Structures</a> &#124; <a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124; <a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> </div> <a href="#func-members">Functions</a> </div>
<div class="headertitle"> <div class="headertitle"><div class="title">Heap Introspection</div></div>
<div class="title">Heap Introspection</div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<p>Inspect the heap at runtime. <p>Inspect the heap at runtime.
<a href="#details">More...</a></p> <a href="#details">More...</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</h2></td></tr> Data Structures</h2></td></tr>
<tr class="memitem:structmi__heap__area__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__analysis.html#structmi__heap__area__t">mi_heap_area_t</a></td></tr> <tr class="memitem:structmi__heap__area__t" id="r_structmi__heap__area__t"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#structmi__heap__area__t">mi_heap_area_t</a></td></tr>
<tr class="memdesc:structmi__heap__area__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">An area of heap space contains blocks of a single size. <a href="group__analysis.html#structmi__heap__area__t">More...</a><br /></td></tr> <tr class="memdesc:structmi__heap__area__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">An area of heap space contains blocks of a single size. <a href="#structmi__heap__area__t">More...</a><br /></td></tr>
<tr class="separator:structmi__heap__area__t"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:structmi__heap__area__t"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls"> </table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr> Typedefs</h2></td></tr>
<tr class="memitem:gadfa01e2900f0e5d515ad5506b26f6d65"><td class="memItemLeft" align="right" valign="top">typedef bool()&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__analysis.html#gadfa01e2900f0e5d515ad5506b26f6d65">mi_block_visit_fun</a>(const <a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, const <a class="el" href="group__analysis.html#structmi__heap__area__t">mi_heap_area_t</a> *area, void *block, size_t block_size, void *arg)</td></tr> <tr class="memitem:ga8255dc9371e6b299d9802a610c4e34ec" id="r_ga8255dc9371e6b299d9802a610c4e34ec"><td class="memItemLeft" align="right" valign="top">typedef bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga8255dc9371e6b299d9802a610c4e34ec">mi_block_visit_fun</a>(const <a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, const <a class="el" href="#structmi__heap__area__t">mi_heap_area_t</a> *area, void *block, size_t block_size, void *arg)</td></tr>
<tr class="memdesc:gadfa01e2900f0e5d515ad5506b26f6d65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor function passed to <a class="el" href="group__analysis.html#ga70c46687dc6e9dc98b232b02646f8bed" title="Visit all areas and blocks in a heap.">mi_heap_visit_blocks()</a> <a href="group__analysis.html#gadfa01e2900f0e5d515ad5506b26f6d65">More...</a><br /></td></tr> <tr class="memdesc:ga8255dc9371e6b299d9802a610c4e34ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor function passed to <a class="el" href="#ga70c46687dc6e9dc98b232b02646f8bed" title="Visit all areas and blocks in a heap.">mi_heap_visit_blocks()</a> <br /></td></tr>
<tr class="separator:gadfa01e2900f0e5d515ad5506b26f6d65"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga8255dc9371e6b299d9802a610c4e34ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls"> </table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr> Functions</h2></td></tr>
<tr class="memitem:gaa862aa8ed8d57d84cae41fc1022d71af"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__analysis.html#gaa862aa8ed8d57d84cae41fc1022d71af">mi_heap_contains_block</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, const void *p)</td></tr> <tr class="memitem:gaa862aa8ed8d57d84cae41fc1022d71af" id="r_gaa862aa8ed8d57d84cae41fc1022d71af"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaa862aa8ed8d57d84cae41fc1022d71af">mi_heap_contains_block</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, const void *p)</td></tr>
<tr class="memdesc:gaa862aa8ed8d57d84cae41fc1022d71af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Does a heap contain a pointer to a previously allocated block? <a href="group__analysis.html#gaa862aa8ed8d57d84cae41fc1022d71af">More...</a><br /></td></tr> <tr class="memdesc:gaa862aa8ed8d57d84cae41fc1022d71af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Does a heap contain a pointer to a previously allocated block? <br /></td></tr>
<tr class="separator:gaa862aa8ed8d57d84cae41fc1022d71af"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gaa862aa8ed8d57d84cae41fc1022d71af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0d67c1789faaa15ff366c024fcaf6377"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__analysis.html#ga0d67c1789faaa15ff366c024fcaf6377">mi_heap_check_owned</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, const void *p)</td></tr> <tr class="memitem:ga0d67c1789faaa15ff366c024fcaf6377" id="r_ga0d67c1789faaa15ff366c024fcaf6377"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga0d67c1789faaa15ff366c024fcaf6377">mi_heap_check_owned</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, const void *p)</td></tr>
<tr class="memdesc:ga0d67c1789faaa15ff366c024fcaf6377"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check safely if any pointer is part of a heap. <a href="group__analysis.html#ga0d67c1789faaa15ff366c024fcaf6377">More...</a><br /></td></tr> <tr class="memdesc:ga0d67c1789faaa15ff366c024fcaf6377"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check safely if any pointer is part of a heap. <br /></td></tr>
<tr class="separator:ga0d67c1789faaa15ff366c024fcaf6377"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga0d67c1789faaa15ff366c024fcaf6377"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga628c237489c2679af84a4d0d143b3dd5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__analysis.html#ga628c237489c2679af84a4d0d143b3dd5">mi_check_owned</a> (const void *p)</td></tr> <tr class="memitem:ga628c237489c2679af84a4d0d143b3dd5" id="r_ga628c237489c2679af84a4d0d143b3dd5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga628c237489c2679af84a4d0d143b3dd5">mi_check_owned</a> (const void *p)</td></tr>
<tr class="memdesc:ga628c237489c2679af84a4d0d143b3dd5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check safely if any pointer is part of the default heap of this thread. <a href="group__analysis.html#ga628c237489c2679af84a4d0d143b3dd5">More...</a><br /></td></tr> <tr class="memdesc:ga628c237489c2679af84a4d0d143b3dd5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check safely if any pointer is part of the default heap of this thread. <br /></td></tr>
<tr class="separator:ga628c237489c2679af84a4d0d143b3dd5"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga628c237489c2679af84a4d0d143b3dd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga70c46687dc6e9dc98b232b02646f8bed"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__analysis.html#ga70c46687dc6e9dc98b232b02646f8bed">mi_heap_visit_blocks</a> (const <a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, bool visit_all_blocks, <a class="el" href="group__analysis.html#gadfa01e2900f0e5d515ad5506b26f6d65">mi_block_visit_fun</a> *visitor, void *arg)</td></tr> <tr class="memitem:ga70c46687dc6e9dc98b232b02646f8bed" id="r_ga70c46687dc6e9dc98b232b02646f8bed"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga70c46687dc6e9dc98b232b02646f8bed">mi_heap_visit_blocks</a> (const <a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, bool visit_all_blocks, <a class="el" href="#ga8255dc9371e6b299d9802a610c4e34ec">mi_block_visit_fun</a> *visitor, void *arg)</td></tr>
<tr class="memdesc:ga70c46687dc6e9dc98b232b02646f8bed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visit all areas and blocks in a heap. <a href="group__analysis.html#ga70c46687dc6e9dc98b232b02646f8bed">More...</a><br /></td></tr> <tr class="memdesc:ga70c46687dc6e9dc98b232b02646f8bed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visit all areas and blocks in a heap. <br /></td></tr>
<tr class="separator:ga70c46687dc6e9dc98b232b02646f8bed"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga70c46687dc6e9dc98b232b02646f8bed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6a4865a887b2ec5247854af61562503c" id="r_ga6a4865a887b2ec5247854af61562503c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga6a4865a887b2ec5247854af61562503c">mi_abandoned_visit_blocks</a> (<a class="el" href="group__extended.html#ga8c0bcd1fee27c7641e9c3c0d991b3b7d">mi_subproc_id_t</a> subproc_id, int heap_tag, bool visit_blocks, <a class="el" href="#ga8255dc9371e6b299d9802a610c4e34ec">mi_block_visit_fun</a> *visitor, void *arg)</td></tr>
<tr class="memdesc:ga6a4865a887b2ec5247854af61562503c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visit all areas and blocks in abandoned heaps. <br /></td></tr>
<tr class="separator:ga6a4865a887b2ec5247854af61562503c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table> </table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Inspect the heap at runtime. </p> <p>Inspect the heap at runtime. </p>
<hr/><h2 class="groupheader">Data Structure Documentation</h2> <hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="structmi__heap__area__t" id="structmi__heap__area__t"></a> <a name="structmi__heap__area__t" id="structmi__heap__area__t"></a>
<h2 class="memtitle"><span class="permalink"><a href="#structmi__heap__area__t">&#9670;&nbsp;</a></span>mi_heap_area_t</h2> <h2 class="memtitle"><span class="permalink"><a href="#structmi__heap__area__t">&#9670;&#160;</a></span>mi_heap_area_t</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -152,31 +164,43 @@ Functions</h2></td></tr>
</div><table class="fieldtable"> </div><table class="fieldtable">
<tr><th colspan="3">Data Fields</th></tr> <tr><th colspan="3">Data Fields</th></tr>
<tr><td class="fieldtype"> <tr><td class="fieldtype">
<a id="a332a6c14d736a99699d5453a1cb04b41"></a>size_t</td> <a id="a332a6c14d736a99699d5453a1cb04b41" name="a332a6c14d736a99699d5453a1cb04b41"></a>size_t</td>
<td class="fieldname"> <td class="fieldname">
block_size</td> block_size</td>
<td class="fielddoc"> <td class="fielddoc">
size in bytes of one block </td></tr> size in bytes of one block </td></tr>
<tr><td class="fieldtype"> <tr><td class="fieldtype">
<a id="ae0085e6e1cf059a4eb7767e30e9991b8"></a>void *</td> <a id="ae0085e6e1cf059a4eb7767e30e9991b8" name="ae0085e6e1cf059a4eb7767e30e9991b8"></a>void *</td>
<td class="fieldname"> <td class="fieldname">
blocks</td> blocks</td>
<td class="fielddoc"> <td class="fielddoc">
start of the area containing heap blocks </td></tr> start of the area containing heap blocks </td></tr>
<tr><td class="fieldtype"> <tr><td class="fieldtype">
<a id="ab47526df656d8837ec3e97f11b83f835"></a>size_t</td> <a id="ab47526df656d8837ec3e97f11b83f835" name="ab47526df656d8837ec3e97f11b83f835"></a>size_t</td>
<td class="fieldname"> <td class="fieldname">
committed</td> committed</td>
<td class="fielddoc"> <td class="fielddoc">
current committed bytes of this area </td></tr> current committed bytes of this area </td></tr>
<tr><td class="fieldtype"> <tr><td class="fieldtype">
<a id="ae848a3e6840414891035423948ca0383"></a>size_t</td> <a id="ab53664e31d7fe2564f8d42041ef75cb3" name="ab53664e31d7fe2564f8d42041ef75cb3"></a>size_t</td>
<td class="fieldname">
full_block_size</td>
<td class="fielddoc">
size in bytes of a full block including padding and metadata. </td></tr>
<tr><td class="fieldtype">
<a id="a2b7a0c92ece8daf46b558efc990ebdc1" name="a2b7a0c92ece8daf46b558efc990ebdc1"></a>int</td>
<td class="fieldname">
heap_tag</td>
<td class="fielddoc">
heap tag associated with this area (see <em class="arg">mi_heap_new_ex</em>) </td></tr>
<tr><td class="fieldtype">
<a id="ae848a3e6840414891035423948ca0383" name="ae848a3e6840414891035423948ca0383"></a>size_t</td>
<td class="fieldname"> <td class="fieldname">
reserved</td> reserved</td>
<td class="fielddoc"> <td class="fielddoc">
bytes reserved for this area </td></tr> bytes reserved for this area </td></tr>
<tr><td class="fieldtype"> <tr><td class="fieldtype">
<a id="ab820302c5cd0df133eb8e51650a008b4"></a>size_t</td> <a id="ab820302c5cd0df133eb8e51650a008b4" name="ab820302c5cd0df133eb8e51650a008b4"></a>size_t</td>
<td class="fieldname"> <td class="fieldname">
used</td> used</td>
<td class="fielddoc"> <td class="fielddoc">
@ -186,27 +210,77 @@ bytes in use by allocated blocks </td></tr>
</div> </div>
</div> </div>
<h2 class="groupheader">Typedef Documentation</h2> <h2 class="groupheader">Typedef Documentation</h2>
<a id="gadfa01e2900f0e5d515ad5506b26f6d65"></a> <a id="ga8255dc9371e6b299d9802a610c4e34ec" name="ga8255dc9371e6b299d9802a610c4e34ec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadfa01e2900f0e5d515ad5506b26f6d65">&#9670;&nbsp;</a></span>mi_block_visit_fun</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga8255dc9371e6b299d9802a610c4e34ec">&#9670;&#160;</a></span>mi_block_visit_fun</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">typedef bool() mi_block_visit_fun(const <a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, const <a class="el" href="group__analysis.html#structmi__heap__area__t">mi_heap_area_t</a> *area, void *block, size_t block_size, void *arg)</td> <td class="memname">typedef bool mi_block_visit_fun(const <a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, const <a class="el" href="#structmi__heap__area__t">mi_heap_area_t</a> *area, void *block, size_t block_size, void *arg)</td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Visitor function passed to <a class="el" href="group__analysis.html#ga70c46687dc6e9dc98b232b02646f8bed" title="Visit all areas and blocks in a heap.">mi_heap_visit_blocks()</a> </p> <p>Visitor function passed to <a class="el" href="#ga70c46687dc6e9dc98b232b02646f8bed" title="Visit all areas and blocks in a heap.">mi_heap_visit_blocks()</a> </p>
<dl class="section return"><dt>Returns</dt><dd><em>true</em> if ok, <em>false</em> to stop visiting (i.e. break)</dd></dl> <dl class="section return"><dt>Returns</dt><dd><em class="arg">true</em> if ok, <em class="arg">false</em> to stop visiting (i.e. break)</dd></dl>
<p>This function is always first called for every <em>area</em> with <em>block</em> as a <em>NULL</em> pointer. If <em>visit_all_blocks</em> was <em>true</em>, the function is then called for every allocated block in that area. </p> <p>This function is always first called for every <em class="arg">area</em> with <em class="arg">block</em> as a <em class="arg">NULL</em> pointer. If <em class="arg">visit_all_blocks</em> was <em class="arg">true</em>, the function is then called for every allocated block in that area. </p>
</div> </div>
</div> </div>
<h2 class="groupheader">Function Documentation</h2> <h2 class="groupheader">Function Documentation</h2>
<a id="ga628c237489c2679af84a4d0d143b3dd5"></a> <a id="ga6a4865a887b2ec5247854af61562503c" name="ga6a4865a887b2ec5247854af61562503c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga628c237489c2679af84a4d0d143b3dd5">&#9670;&nbsp;</a></span>mi_check_owned()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga6a4865a887b2ec5247854af61562503c">&#9670;&#160;</a></span>mi_abandoned_visit_blocks()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool mi_abandoned_visit_blocks </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__extended.html#ga8c0bcd1fee27c7641e9c3c0d991b3b7d">mi_subproc_id_t</a></td> <td class="paramname"><span class="paramname"><em>subproc_id</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int</td> <td class="paramname"><span class="paramname"><em>heap_tag</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool</td> <td class="paramname"><span class="paramname"><em>visit_blocks</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="#ga8255dc9371e6b299d9802a610c4e34ec">mi_block_visit_fun</a> *</td> <td class="paramname"><span class="paramname"><em>visitor</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>arg</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Visit all areas and blocks in abandoned heaps. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">subproc_id</td><td>The sub-process id associated with the abandoned heaps. </td></tr>
<tr><td class="paramname">heap_tag</td><td>Visit only abandoned memory with the specified heap tag, use -1 to visit all abandoned memory. </td></tr>
<tr><td class="paramname">visit_blocks</td><td>If <em class="arg">true</em> visits all allocated blocks, otherwise <em class="arg">visitor</em> is only called for every heap area. </td></tr>
<tr><td class="paramname">visitor</td><td>This function is called for every area in the heap (with <em class="arg">block</em> as <em class="arg">NULL</em>). If <em class="arg">visit_all_blocks</em> is <em class="arg">true</em>, <em class="arg">visitor</em> is also called for every allocated block in every area (with <code>block!=NULL</code>). return <em class="arg">false</em> from this function to stop visiting early. </td></tr>
<tr><td class="paramname">arg</td><td>extra argument passed to the <em class="arg">visitor</em>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><em class="arg">true</em> if all areas and blocks were visited.</dd></dl>
<p>Note: requires the option <code>mi_option_visit_abandoned</code> to be set at the start of the program. </p>
</div>
</div>
<a id="ga628c237489c2679af84a4d0d143b3dd5" name="ga628c237489c2679af84a4d0d143b3dd5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga628c237489c2679af84a4d0d143b3dd5">&#9670;&#160;</a></span>mi_check_owned()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -214,8 +288,7 @@ bytes in use by allocated blocks </td></tr>
<tr> <tr>
<td class="memname">bool mi_check_owned </td> <td class="memname">bool mi_check_owned </td>
<td>(</td> <td>(</td>
<td class="paramtype">const void *&#160;</td> <td class="paramtype">const void *</td> <td class="paramname"><span class="paramname"><em>p</em></span></td><td>)</td>
<td class="paramname"><em>p</em></td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
@ -228,15 +301,15 @@ bytes in use by allocated blocks </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd><em>true</em> if <em>p</em> points to a block in default heap of this thread.</dd></dl> <dl class="section return"><dt>Returns</dt><dd><em class="arg">true</em> if <em class="arg">p</em> points to a block in default heap of this thread.</dd></dl>
<p>Note: expensive function, linear in the pages in the heap. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__analysis.html#gaa862aa8ed8d57d84cae41fc1022d71af" title="Does a heap contain a pointer to a previously allocated block?">mi_heap_contains_block()</a> </dd> <p>Note: expensive function, linear in the pages in the heap. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="#gaa862aa8ed8d57d84cae41fc1022d71af" title="Does a heap contain a pointer to a previously allocated block?">mi_heap_contains_block()</a> </dd>
<dd> <dd>
<a class="el" href="group__heap.html#ga8db4cbb87314a989a9a187464d6b5e05" title="Get the default heap that is used for mi_malloc() et al.">mi_heap_get_default()</a> </dd></dl> <a class="el" href="group__heap.html#ga14c667a6e2c5d28762d8cb7d4e057909" title="Get the default heap that is used for mi_malloc() et al.">mi_heap_get_default()</a> </dd></dl>
</div> </div>
</div> </div>
<a id="ga0d67c1789faaa15ff366c024fcaf6377"></a> <a id="ga0d67c1789faaa15ff366c024fcaf6377" name="ga0d67c1789faaa15ff366c024fcaf6377"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0d67c1789faaa15ff366c024fcaf6377">&#9670;&nbsp;</a></span>mi_heap_check_owned()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga0d67c1789faaa15ff366c024fcaf6377">&#9670;&#160;</a></span>mi_heap_check_owned()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -244,19 +317,12 @@ bytes in use by allocated blocks </td></tr>
<tr> <tr>
<td class="memname">bool mi_heap_check_owned </td> <td class="memname">bool mi_heap_check_owned </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *&#160;</td> <td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *</td> <td class="paramname"><span class="paramname"><em>heap</em></span>, </td>
<td class="paramname"><em>heap</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">const void *&#160;</td> <td class="paramtype">const void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>&#160;)</td>
<td class="paramname"><em>p</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
@ -269,15 +335,15 @@ bytes in use by allocated blocks </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd><em>true</em> if <em>p</em> points to a block in <em>heap</em>.</dd></dl> <dl class="section return"><dt>Returns</dt><dd><em class="arg">true</em> if <em class="arg">p</em> points to a block in <em class="arg">heap</em>.</dd></dl>
<p>Note: expensive function, linear in the pages in the heap. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__analysis.html#gaa862aa8ed8d57d84cae41fc1022d71af" title="Does a heap contain a pointer to a previously allocated block?">mi_heap_contains_block()</a> </dd> <p>Note: expensive function, linear in the pages in the heap. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="#gaa862aa8ed8d57d84cae41fc1022d71af" title="Does a heap contain a pointer to a previously allocated block?">mi_heap_contains_block()</a> </dd>
<dd> <dd>
<a class="el" href="group__heap.html#ga8db4cbb87314a989a9a187464d6b5e05" title="Get the default heap that is used for mi_malloc() et al.">mi_heap_get_default()</a> </dd></dl> <a class="el" href="group__heap.html#ga14c667a6e2c5d28762d8cb7d4e057909" title="Get the default heap that is used for mi_malloc() et al.">mi_heap_get_default()</a> </dd></dl>
</div> </div>
</div> </div>
<a id="gaa862aa8ed8d57d84cae41fc1022d71af"></a> <a id="gaa862aa8ed8d57d84cae41fc1022d71af" name="gaa862aa8ed8d57d84cae41fc1022d71af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa862aa8ed8d57d84cae41fc1022d71af">&#9670;&nbsp;</a></span>mi_heap_contains_block()</h2> <h2 class="memtitle"><span class="permalink"><a href="#gaa862aa8ed8d57d84cae41fc1022d71af">&#9670;&#160;</a></span>mi_heap_contains_block()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -285,19 +351,12 @@ bytes in use by allocated blocks </td></tr>
<tr> <tr>
<td class="memname">bool mi_heap_contains_block </td> <td class="memname">bool mi_heap_contains_block </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *&#160;</td> <td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *</td> <td class="paramname"><span class="paramname"><em>heap</em></span>, </td>
<td class="paramname"><em>heap</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">const void *&#160;</td> <td class="paramtype">const void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>&#160;)</td>
<td class="paramname"><em>p</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
@ -310,13 +369,13 @@ bytes in use by allocated blocks </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd><em>true</em> if the block pointed to by <em>p</em> is in the <em>heap</em>. </dd></dl> <dl class="section return"><dt>Returns</dt><dd><em class="arg">true</em> if the block pointed to by <em class="arg">p</em> is in the <em class="arg">heap</em>. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__analysis.html#ga0d67c1789faaa15ff366c024fcaf6377" title="Check safely if any pointer is part of a heap.">mi_heap_check_owned()</a> </dd></dl> <dl class="section see"><dt>See also</dt><dd><a class="el" href="#ga0d67c1789faaa15ff366c024fcaf6377" title="Check safely if any pointer is part of a heap.">mi_heap_check_owned()</a> </dd></dl>
</div> </div>
</div> </div>
<a id="ga70c46687dc6e9dc98b232b02646f8bed"></a> <a id="ga70c46687dc6e9dc98b232b02646f8bed" name="ga70c46687dc6e9dc98b232b02646f8bed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga70c46687dc6e9dc98b232b02646f8bed">&#9670;&nbsp;</a></span>mi_heap_visit_blocks()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga70c46687dc6e9dc98b232b02646f8bed">&#9670;&#160;</a></span>mi_heap_visit_blocks()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -324,31 +383,22 @@ bytes in use by allocated blocks </td></tr>
<tr> <tr>
<td class="memname">bool mi_heap_visit_blocks </td> <td class="memname">bool mi_heap_visit_blocks </td>
<td>(</td> <td>(</td>
<td class="paramtype">const <a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *&#160;</td> <td class="paramtype">const <a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *</td> <td class="paramname"><span class="paramname"><em>heap</em></span>, </td>
<td class="paramname"><em>heap</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">bool&#160;</td> <td class="paramtype">bool</td> <td class="paramname"><span class="paramname"><em>visit_all_blocks</em></span>, </td>
<td class="paramname"><em>visit_all_blocks</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype"><a class="el" href="group__analysis.html#gadfa01e2900f0e5d515ad5506b26f6d65">mi_block_visit_fun</a> *&#160;</td> <td class="paramtype"><a class="el" href="#ga8255dc9371e6b299d9802a610c4e34ec">mi_block_visit_fun</a> *</td> <td class="paramname"><span class="paramname"><em>visitor</em></span>, </td>
<td class="paramname"><em>visitor</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>arg</em></span>&#160;)</td>
<td class="paramname"><em>arg</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
@ -357,13 +407,13 @@ bytes in use by allocated blocks </td></tr>
<dl class="params"><dt>Parameters</dt><dd> <dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">heap</td><td>The heap to visit. </td></tr> <tr><td class="paramname">heap</td><td>The heap to visit. </td></tr>
<tr><td class="paramname">visit_all_blocks</td><td>If <em>true</em> visits all allocated blocks, otherwise <em>visitor</em> is only called for every heap area. </td></tr> <tr><td class="paramname">visit_all_blocks</td><td>If <em class="arg">true</em> visits all allocated blocks, otherwise <em class="arg">visitor</em> is only called for every heap area. </td></tr>
<tr><td class="paramname">visitor</td><td>This function is called for every area in the heap (with <em>block</em> as <em>NULL</em>). If <em>visit_all_blocks</em> is <em>true</em>, <em>visitor</em> is also called for every allocated block in every area (with <code>block!=NULL</code>). return <em>false</em> from this function to stop visiting early. </td></tr> <tr><td class="paramname">visitor</td><td>This function is called for every area in the heap (with <em class="arg">block</em> as <em class="arg">NULL</em>). If <em class="arg">visit_all_blocks</em> is <em class="arg">true</em>, <em class="arg">visitor</em> is also called for every allocated block in every area (with <code>block!=NULL</code>). return <em class="arg">false</em> from this function to stop visiting early. </td></tr>
<tr><td class="paramname">arg</td><td>Extra argument passed to <em>visitor</em>. </td></tr> <tr><td class="paramname">arg</td><td>Extra argument passed to <em class="arg">visitor</em>. </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd><em>true</em> if all areas and blocks were visited. </dd></dl> <dl class="section return"><dt>Returns</dt><dd><em class="arg">true</em> if all areas and blocks were visited. </dd></dl>
</div> </div>
</div> </div>
@ -372,7 +422,7 @@ bytes in use by allocated blocks </td></tr>
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -4,10 +4,13 @@ var group__analysis =
[ "block_size", "group__analysis.html#a332a6c14d736a99699d5453a1cb04b41", null ], [ "block_size", "group__analysis.html#a332a6c14d736a99699d5453a1cb04b41", null ],
[ "blocks", "group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8", null ], [ "blocks", "group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8", null ],
[ "committed", "group__analysis.html#ab47526df656d8837ec3e97f11b83f835", null ], [ "committed", "group__analysis.html#ab47526df656d8837ec3e97f11b83f835", null ],
[ "full_block_size", "group__analysis.html#ab53664e31d7fe2564f8d42041ef75cb3", null ],
[ "heap_tag", "group__analysis.html#a2b7a0c92ece8daf46b558efc990ebdc1", null ],
[ "reserved", "group__analysis.html#ae848a3e6840414891035423948ca0383", null ], [ "reserved", "group__analysis.html#ae848a3e6840414891035423948ca0383", null ],
[ "used", "group__analysis.html#ab820302c5cd0df133eb8e51650a008b4", null ] [ "used", "group__analysis.html#ab820302c5cd0df133eb8e51650a008b4", null ]
] ], ] ],
[ "mi_block_visit_fun", "group__analysis.html#gadfa01e2900f0e5d515ad5506b26f6d65", null ], [ "mi_block_visit_fun", "group__analysis.html#ga8255dc9371e6b299d9802a610c4e34ec", null ],
[ "mi_abandoned_visit_blocks", "group__analysis.html#ga6a4865a887b2ec5247854af61562503c", null ],
[ "mi_check_owned", "group__analysis.html#ga628c237489c2679af84a4d0d143b3dd5", null ], [ "mi_check_owned", "group__analysis.html#ga628c237489c2679af84a4d0d143b3dd5", null ],
[ "mi_heap_check_owned", "group__analysis.html#ga0d67c1789faaa15ff366c024fcaf6377", null ], [ "mi_heap_check_owned", "group__analysis.html#ga0d67c1789faaa15ff366c024fcaf6377", null ],
[ "mi_heap_contains_block", "group__analysis.html#gaa862aa8ed8d57d84cae41fc1022d71af", null ], [ "mi_heap_contains_block", "group__analysis.html#gaa862aa8ed8d57d84cae41fc1022d71af", null ],

View file

@ -3,6 +3,8 @@ var group__analysis_structmi__heap__area__t =
[ "block_size", "group__analysis.html#a332a6c14d736a99699d5453a1cb04b41", null ], [ "block_size", "group__analysis.html#a332a6c14d736a99699d5453a1cb04b41", null ],
[ "blocks", "group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8", null ], [ "blocks", "group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8", null ],
[ "committed", "group__analysis.html#ab47526df656d8837ec3e97f11b83f835", null ], [ "committed", "group__analysis.html#ab47526df656d8837ec3e97f11b83f835", null ],
[ "full_block_size", "group__analysis.html#ab53664e31d7fe2564f8d42041ef75cb3", null ],
[ "heap_tag", "group__analysis.html#a2b7a0c92ece8daf46b558efc990ebdc1", null ],
[ "reserved", "group__analysis.html#ae848a3e6840414891035423948ca0383", null ], [ "reserved", "group__analysis.html#ae848a3e6840414891035423948ca0383", null ],
[ "used", "group__analysis.html#ab820302c5cd0df133eb8e51650a008b4", null ] [ "used", "group__analysis.html#ab820302c5cd0df133eb8e51650a008b4", null ]
]; ];

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: C++ wrappers</title> <title>mi-malloc: C++ wrappers</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('group__cpp.html',''); initResizable(); }); $(function(){initNavTree('group__cpp.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,59 +91,65 @@ $(document).ready(function(){initNavTree('group__cpp.html',''); initResizable();
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124; <a href="#nested-classes">Data Structures</a> &#124;
<a href="#func-members">Functions</a> </div> <a href="#func-members">Functions</a> </div>
<div class="headertitle"> <div class="headertitle"><div class="title">C++ wrappers</div></div>
<div class="title">C++ wrappers</div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<p><code>mi_</code> prefixed implementations of various allocation functions that use C++ semantics on out-of-memory, generally calling <code>std::get_new_handler</code> and raising a <code>std::bad_alloc</code> exception on failure. <p><code>mi_</code> prefixed implementations of various allocation functions that use C++ semantics on out-of-memory, generally calling <code>std::get_new_handler</code> and raising a <code>std::bad_alloc</code> exception on failure.
<a href="#details">More...</a></p> <a href="#details">More...</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</h2></td></tr> Data Structures</h2></td></tr>
<tr class="memitem:structmi__stl__allocator"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__cpp.html#structmi__stl__allocator">mi_stl_allocator&lt; T &gt;</a></td></tr> <tr class="memitem:structmi__stl__allocator" id="r_structmi__stl__allocator"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#structmi__stl__allocator">mi_stl_allocator&lt; T &gt;</a></td></tr>
<tr class="memdesc:structmi__stl__allocator"><td class="mdescLeft">&#160;</td><td class="mdescRight"><em>std::allocator</em> implementation for mimalloc for use in STL containers. <a href="group__cpp.html#structmi__stl__allocator">More...</a><br /></td></tr> <tr class="memdesc:structmi__stl__allocator"><td class="mdescLeft">&#160;</td><td class="mdescRight"><em class="arg">std::allocator</em> implementation for mimalloc for use in STL containers. <a href="#structmi__stl__allocator">More...</a><br /></td></tr>
<tr class="separator:structmi__stl__allocator"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:structmi__stl__allocator"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls"> </table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr> Functions</h2></td></tr>
<tr class="memitem:gaad048a9fce3d02c5909cd05c6ec24545"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__cpp.html#gaad048a9fce3d02c5909cd05c6ec24545">mi_new</a> (std::size_t n) noexcept(false)</td></tr> <tr class="memitem:ga633d96e3bc7011f960df9f3b2731fc6a" id="r_ga633d96e3bc7011f960df9f3b2731fc6a"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga633d96e3bc7011f960df9f3b2731fc6a">mi_new</a> (std::size_t n) noexcept(false)</td></tr>
<tr class="memdesc:gaad048a9fce3d02c5909cd05c6ec24545"><td class="mdescLeft">&#160;</td><td class="mdescRight">like <a class="el" href="group__malloc.html#ga3406e8b168bc74c8637b11571a6da83a" title="Allocate size bytes.">mi_malloc()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. <a href="group__cpp.html#gaad048a9fce3d02c5909cd05c6ec24545">More...</a><br /></td></tr> <tr class="memdesc:ga633d96e3bc7011f960df9f3b2731fc6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">like <a class="el" href="group__malloc.html#gae1dd97b542420c87ae085e822b1229e8" title="Allocate size bytes.">mi_malloc()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. <br /></td></tr>
<tr class="separator:gaad048a9fce3d02c5909cd05c6ec24545"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga633d96e3bc7011f960df9f3b2731fc6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae7bc4f56cd57ed3359060ff4f38bda81"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__cpp.html#gae7bc4f56cd57ed3359060ff4f38bda81">mi_new_n</a> (size_t count, size_t size) noexcept(false)</td></tr> <tr class="memitem:gadd11b85c15d21d308386844b5233856c" id="r_gadd11b85c15d21d308386844b5233856c"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gadd11b85c15d21d308386844b5233856c">mi_new_n</a> (size_t count, size_t size) noexcept(false)</td></tr>
<tr class="memdesc:gae7bc4f56cd57ed3359060ff4f38bda81"><td class="mdescLeft">&#160;</td><td class="mdescRight">like <a class="el" href="group__malloc.html#ga0b05e2bf0f73e7401ae08597ff782ac6" title="Allocate count elements of size bytes.">mi_mallocn()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. <a href="group__cpp.html#gae7bc4f56cd57ed3359060ff4f38bda81">More...</a><br /></td></tr> <tr class="memdesc:gadd11b85c15d21d308386844b5233856c"><td class="mdescLeft">&#160;</td><td class="mdescRight">like <a class="el" href="group__malloc.html#ga61f46bade3db76ca24aaafedc40de7b6" title="Allocate count elements of size bytes.">mi_mallocn()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. <br /></td></tr>
<tr class="separator:gae7bc4f56cd57ed3359060ff4f38bda81"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gadd11b85c15d21d308386844b5233856c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaef2c2bdb4f70857902d3c8903ac095f3"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__cpp.html#gaef2c2bdb4f70857902d3c8903ac095f3">mi_new_aligned</a> (std::size_t n, std::align_val_t alignment) noexcept(false)</td></tr> <tr class="memitem:ga79c54da0b4b4ce9fcc11d2f6ef6675f8" id="r_ga79c54da0b4b4ce9fcc11d2f6ef6675f8"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga79c54da0b4b4ce9fcc11d2f6ef6675f8">mi_new_aligned</a> (std::size_t n, std::align_val_t alignment) noexcept(false)</td></tr>
<tr class="memdesc:gaef2c2bdb4f70857902d3c8903ac095f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">like <a class="el" href="group__aligned.html#ga68930196751fa2cca9e1fd0d71bade56" title="Allocate size bytes aligned by alignment.">mi_malloc_aligned()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. <a href="group__cpp.html#gaef2c2bdb4f70857902d3c8903ac095f3">More...</a><br /></td></tr> <tr class="memdesc:ga79c54da0b4b4ce9fcc11d2f6ef6675f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">like <a class="el" href="group__aligned.html#ga69578ff1a98ca16e1dcd02c0995cd65c" title="Allocate size bytes aligned by alignment.">mi_malloc_aligned()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. <br /></td></tr>
<tr class="separator:gaef2c2bdb4f70857902d3c8903ac095f3"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga79c54da0b4b4ce9fcc11d2f6ef6675f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeaded64eda71ed6b1d569d3e723abc4a"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__cpp.html#gaeaded64eda71ed6b1d569d3e723abc4a">mi_new_nothrow</a> (size_t n)</td></tr> <tr class="memitem:ga5cb4f120d1f7296074256215aa9a9e54" id="r_ga5cb4f120d1f7296074256215aa9a9e54"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga5cb4f120d1f7296074256215aa9a9e54">mi_new_nothrow</a> (size_t n)</td></tr>
<tr class="memdesc:gaeaded64eda71ed6b1d569d3e723abc4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">like <code>mi_malloc</code>, but when out of memory, use <code>std::get_new_handler</code> but return <em>NULL</em> on failure. <a href="group__cpp.html#gaeaded64eda71ed6b1d569d3e723abc4a">More...</a><br /></td></tr> <tr class="memdesc:ga5cb4f120d1f7296074256215aa9a9e54"><td class="mdescLeft">&#160;</td><td class="mdescRight">like <code>mi_malloc</code>, but when out of memory, use <code>std::get_new_handler</code> but return <em class="arg">NULL</em> on failure. <br /></td></tr>
<tr class="separator:gaeaded64eda71ed6b1d569d3e723abc4a"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga5cb4f120d1f7296074256215aa9a9e54"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab5e29558926d934c3f1cae8c815f942c"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__cpp.html#gab5e29558926d934c3f1cae8c815f942c">mi_new_aligned_nothrow</a> (size_t n, size_t alignment)</td></tr> <tr class="memitem:ga92ae00b6dd64406c7e64557711ec04b7" id="r_ga92ae00b6dd64406c7e64557711ec04b7"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga92ae00b6dd64406c7e64557711ec04b7">mi_new_aligned_nothrow</a> (size_t n, size_t alignment)</td></tr>
<tr class="memdesc:gab5e29558926d934c3f1cae8c815f942c"><td class="mdescLeft">&#160;</td><td class="mdescRight">like <code>mi_malloc_aligned</code>, but when out of memory, use <code>std::get_new_handler</code> but return <em>NULL</em> on failure. <a href="group__cpp.html#gab5e29558926d934c3f1cae8c815f942c">More...</a><br /></td></tr> <tr class="memdesc:ga92ae00b6dd64406c7e64557711ec04b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">like <code>mi_malloc_aligned</code>, but when out of memory, use <code>std::get_new_handler</code> but return <em class="arg">NULL</em> on failure. <br /></td></tr>
<tr class="separator:gab5e29558926d934c3f1cae8c815f942c"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga92ae00b6dd64406c7e64557711ec04b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaab78a32f55149e9fbf432d5288e38e1e"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__cpp.html#gaab78a32f55149e9fbf432d5288e38e1e">mi_new_realloc</a> (void *p, size_t newsize)</td></tr> <tr class="memitem:ga6867d89baf992728e0cc20a1f47db4d0" id="r_ga6867d89baf992728e0cc20a1f47db4d0"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga6867d89baf992728e0cc20a1f47db4d0">mi_new_realloc</a> (void *p, size_t newsize)</td></tr>
<tr class="memdesc:gaab78a32f55149e9fbf432d5288e38e1e"><td class="mdescLeft">&#160;</td><td class="mdescRight">like <a class="el" href="group__malloc.html#gaf11eb497da57bdfb2de65eb191c69db6" title="Re-allocate memory to newsize bytes.">mi_realloc()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. <a href="group__cpp.html#gaab78a32f55149e9fbf432d5288e38e1e">More...</a><br /></td></tr> <tr class="memdesc:ga6867d89baf992728e0cc20a1f47db4d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">like <a class="el" href="group__malloc.html#ga0621af6a5e3aa384e6a1b548958bf583" title="Re-allocate memory to newsize bytes.">mi_realloc()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. <br /></td></tr>
<tr class="separator:gaab78a32f55149e9fbf432d5288e38e1e"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga6867d89baf992728e0cc20a1f47db4d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga756f4b2bc6a7ecd0a90baea8e90c7907"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__cpp.html#ga756f4b2bc6a7ecd0a90baea8e90c7907">mi_new_reallocn</a> (void *p, size_t newcount, size_t size)</td></tr> <tr class="memitem:gaace912ce086682d56f3ce9f7638d9d67" id="r_gaace912ce086682d56f3ce9f7638d9d67"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaace912ce086682d56f3ce9f7638d9d67">mi_new_reallocn</a> (void *p, size_t newcount, size_t size)</td></tr>
<tr class="memdesc:ga756f4b2bc6a7ecd0a90baea8e90c7907"><td class="mdescLeft">&#160;</td><td class="mdescRight">like <a class="el" href="group__malloc.html#ga61d57b4144ba24fba5c1e9b956d13853" title="Re-allocate memory to count elements of size bytes.">mi_reallocn()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. <a href="group__cpp.html#ga756f4b2bc6a7ecd0a90baea8e90c7907">More...</a><br /></td></tr> <tr class="memdesc:gaace912ce086682d56f3ce9f7638d9d67"><td class="mdescLeft">&#160;</td><td class="mdescRight">like <a class="el" href="group__malloc.html#ga8bddfb4a1270a0854bbcf44cb3980467" title="Re-allocate memory to count elements of size bytes.">mi_reallocn()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. <br /></td></tr>
<tr class="separator:ga756f4b2bc6a7ecd0a90baea8e90c7907"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gaace912ce086682d56f3ce9f7638d9d67"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table> </table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p><code>mi_</code> prefixed implementations of various allocation functions that use C++ semantics on out-of-memory, generally calling <code>std::get_new_handler</code> and raising a <code>std::bad_alloc</code> exception on failure. </p> <p><code>mi_</code> prefixed implementations of various allocation functions that use C++ semantics on out-of-memory, generally calling <code>std::get_new_handler</code> and raising a <code>std::bad_alloc</code> exception on failure. </p>
<p>Note: use the <code>mimalloc-new-delete.h</code> header to override the <em>new</em> and <em>delete</em> operators globally. The wrappers here are mostly for convience for library writers that need to interface with mimalloc from C++. </p> <p>Note: use the <code>mimalloc-new-delete.h</code> header to override the <em class="arg">new</em> and <em class="arg">delete</em> operators globally. The wrappers here are mostly for convenience for library writers that need to interface with mimalloc from C++. </p>
<hr/><h2 class="groupheader">Data Structure Documentation</h2> <hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="structmi__stl__allocator" id="structmi__stl__allocator"></a> <a name="structmi__stl__allocator" id="structmi__stl__allocator"></a>
<h2 class="memtitle"><span class="permalink"><a href="#structmi__stl__allocator">&#9670;&nbsp;</a></span>mi_stl_allocator</h2> <h2 class="memtitle"><span class="permalink"><a href="#structmi__stl__allocator">&#9670;&#160;</a></span>mi_stl_allocator</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -150,10 +159,8 @@ Functions</h2></td></tr>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<div class="textblock"><h3>template&lt;class T&gt;<br /> <div class="textblock"><div class="compoundTemplParams">template&lt;class T&gt;<br />
struct mi_stl_allocator&lt; T &gt;</h3> struct mi_stl_allocator&lt; T &gt;</div><p><em class="arg">std::allocator</em> implementation for mimalloc for use in STL containers. </p>
<p><em>std::allocator</em> implementation for mimalloc for use in STL containers. </p>
<p>For example: </p><div class="fragment"><div class="line">std::vector&lt;int, mi_stl_allocator&lt;int&gt; &gt; vec;</div> <p>For example: </p><div class="fragment"><div class="line">std::vector&lt;int, mi_stl_allocator&lt;int&gt; &gt; vec;</div>
<div class="line">vec.push_back(1);</div> <div class="line">vec.push_back(1);</div>
<div class="line">vec.pop_back();</div> <div class="line">vec.pop_back();</div>
@ -161,223 +168,161 @@ struct mi_stl_allocator&lt; T &gt;</h3>
</div> </div>
</div> </div>
<h2 class="groupheader">Function Documentation</h2> <h2 class="groupheader">Function Documentation</h2>
<a id="gaad048a9fce3d02c5909cd05c6ec24545"></a> <a id="ga633d96e3bc7011f960df9f3b2731fc6a" name="ga633d96e3bc7011f960df9f3b2731fc6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaad048a9fce3d02c5909cd05c6ec24545">&#9670;&nbsp;</a></span>mi_new()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga633d96e3bc7011f960df9f3b2731fc6a">&#9670;&#160;</a></span>mi_new()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_new </td> <td class="memname">void * mi_new </td>
<td>(</td> <td>(</td>
<td class="paramtype">std::size_t&#160;</td> <td class="paramtype">std::size_t</td> <td class="paramname"><span class="paramname"><em>n</em></span></td><td>)</td>
<td class="paramname"><em>n</em></td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>like <a class="el" href="group__malloc.html#ga3406e8b168bc74c8637b11571a6da83a" title="Allocate size bytes.">mi_malloc()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. </p> <p>like <a class="el" href="group__malloc.html#gae1dd97b542420c87ae085e822b1229e8" title="Allocate size bytes.">mi_malloc()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. </p>
</div> </div>
</div> </div>
<a id="gaef2c2bdb4f70857902d3c8903ac095f3"></a> <a id="ga79c54da0b4b4ce9fcc11d2f6ef6675f8" name="ga79c54da0b4b4ce9fcc11d2f6ef6675f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaef2c2bdb4f70857902d3c8903ac095f3">&#9670;&nbsp;</a></span>mi_new_aligned()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga79c54da0b4b4ce9fcc11d2f6ef6675f8">&#9670;&#160;</a></span>mi_new_aligned()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_new_aligned </td> <td class="memname">void * mi_new_aligned </td>
<td>(</td> <td>(</td>
<td class="paramtype">std::size_t&#160;</td> <td class="paramtype">std::size_t</td> <td class="paramname"><span class="paramname"><em>n</em></span>, </td>
<td class="paramname"><em>n</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">std::align_val_t&#160;</td> <td class="paramtype">std::align_val_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>&#160;)</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>like <a class="el" href="group__aligned.html#ga68930196751fa2cca9e1fd0d71bade56" title="Allocate size bytes aligned by alignment.">mi_malloc_aligned()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. </p> <p>like <a class="el" href="group__aligned.html#ga69578ff1a98ca16e1dcd02c0995cd65c" title="Allocate size bytes aligned by alignment.">mi_malloc_aligned()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. </p>
</div> </div>
</div> </div>
<a id="gab5e29558926d934c3f1cae8c815f942c"></a> <a id="ga92ae00b6dd64406c7e64557711ec04b7" name="ga92ae00b6dd64406c7e64557711ec04b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab5e29558926d934c3f1cae8c815f942c">&#9670;&nbsp;</a></span>mi_new_aligned_nothrow()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga92ae00b6dd64406c7e64557711ec04b7">&#9670;&#160;</a></span>mi_new_aligned_nothrow()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_new_aligned_nothrow </td> <td class="memname">void * mi_new_aligned_nothrow </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>n</em></span>, </td>
<td class="paramname"><em>n</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>&#160;)</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>like <code>mi_malloc_aligned</code>, but when out of memory, use <code>std::get_new_handler</code> but return <em>NULL</em> on failure. </p> <p>like <code>mi_malloc_aligned</code>, but when out of memory, use <code>std::get_new_handler</code> but return <em class="arg">NULL</em> on failure. </p>
</div> </div>
</div> </div>
<a id="gae7bc4f56cd57ed3359060ff4f38bda81"></a> <a id="gadd11b85c15d21d308386844b5233856c" name="gadd11b85c15d21d308386844b5233856c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae7bc4f56cd57ed3359060ff4f38bda81">&#9670;&nbsp;</a></span>mi_new_n()</h2> <h2 class="memtitle"><span class="permalink"><a href="#gadd11b85c15d21d308386844b5233856c">&#9670;&#160;</a></span>mi_new_n()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void* mi_new_n </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>like <a class="el" href="group__malloc.html#ga0b05e2bf0f73e7401ae08597ff782ac6" title="Allocate count elements of size bytes.">mi_mallocn()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. </p>
</div>
</div>
<a id="gaeaded64eda71ed6b1d569d3e723abc4a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaeaded64eda71ed6b1d569d3e723abc4a">&#9670;&nbsp;</a></span>mi_new_nothrow()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_new_nothrow </td> <td class="memname">void * mi_new_n </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>count</em></span>, </td>
<td class="paramname"><em>n</em></td><td>)</td> </tr>
<tr>
<td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>like <code>mi_malloc</code>, but when out of memory, use <code>std::get_new_handler</code> but return <em>NULL</em> on failure. </p> <p>like <a class="el" href="group__malloc.html#ga61f46bade3db76ca24aaafedc40de7b6" title="Allocate count elements of size bytes.">mi_mallocn()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. </p>
</div> </div>
</div> </div>
<a id="gaab78a32f55149e9fbf432d5288e38e1e"></a> <a id="ga5cb4f120d1f7296074256215aa9a9e54" name="ga5cb4f120d1f7296074256215aa9a9e54"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaab78a32f55149e9fbf432d5288e38e1e">&#9670;&nbsp;</a></span>mi_new_realloc()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga5cb4f120d1f7296074256215aa9a9e54">&#9670;&#160;</a></span>mi_new_nothrow()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_new_realloc </td> <td class="memname">void * mi_new_nothrow </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>n</em></span></td><td>)</td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>newsize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>like <a class="el" href="group__malloc.html#gaf11eb497da57bdfb2de65eb191c69db6" title="Re-allocate memory to newsize bytes.">mi_realloc()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. </p> <p>like <code>mi_malloc</code>, but when out of memory, use <code>std::get_new_handler</code> but return <em class="arg">NULL</em> on failure. </p>
</div> </div>
</div> </div>
<a id="ga756f4b2bc6a7ecd0a90baea8e90c7907"></a> <a id="ga6867d89baf992728e0cc20a1f47db4d0" name="ga6867d89baf992728e0cc20a1f47db4d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga756f4b2bc6a7ecd0a90baea8e90c7907">&#9670;&nbsp;</a></span>mi_new_reallocn()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga6867d89baf992728e0cc20a1f47db4d0">&#9670;&#160;</a></span>mi_new_realloc()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_new_reallocn </td> <td class="memname">void * mi_new_realloc </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newsize</em></span>&#160;)</td>
<td class="paramname"><em>newcount</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>like <a class="el" href="group__malloc.html#ga61d57b4144ba24fba5c1e9b956d13853" title="Re-allocate memory to count elements of size bytes.">mi_reallocn()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. </p> <p>like <a class="el" href="group__malloc.html#ga0621af6a5e3aa384e6a1b548958bf583" title="Re-allocate memory to newsize bytes.">mi_realloc()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. </p>
</div>
</div>
<a id="gaace912ce086682d56f3ce9f7638d9d67" name="gaace912ce086682d56f3ce9f7638d9d67"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaace912ce086682d56f3ce9f7638d9d67">&#9670;&#160;</a></span>mi_new_reallocn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void * mi_new_reallocn </td>
<td>(</td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newcount</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>like <a class="el" href="group__malloc.html#ga8bddfb4a1270a0854bbcf44cb3980467" title="Re-allocate memory to count elements of size bytes.">mi_reallocn()</a>, but when out of memory, use <code>std::get_new_handler</code> and raise <code>std::bad_alloc</code> exception on failure. </p>
</div> </div>
</div> </div>
@ -386,7 +331,7 @@ struct mi_stl_allocator&lt; T &gt;</h3>
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -1,11 +1,11 @@
var group__cpp = var group__cpp =
[ [
[ "mi_stl_allocator", "group__cpp.html#structmi__stl__allocator", null ], [ "mi_stl_allocator< T >", "group__cpp.html#structmi__stl__allocator", null ],
[ "mi_new", "group__cpp.html#gaad048a9fce3d02c5909cd05c6ec24545", null ], [ "mi_new", "group__cpp.html#ga633d96e3bc7011f960df9f3b2731fc6a", null ],
[ "mi_new_aligned", "group__cpp.html#gaef2c2bdb4f70857902d3c8903ac095f3", null ], [ "mi_new_aligned", "group__cpp.html#ga79c54da0b4b4ce9fcc11d2f6ef6675f8", null ],
[ "mi_new_aligned_nothrow", "group__cpp.html#gab5e29558926d934c3f1cae8c815f942c", null ], [ "mi_new_aligned_nothrow", "group__cpp.html#ga92ae00b6dd64406c7e64557711ec04b7", null ],
[ "mi_new_n", "group__cpp.html#gae7bc4f56cd57ed3359060ff4f38bda81", null ], [ "mi_new_n", "group__cpp.html#gadd11b85c15d21d308386844b5233856c", null ],
[ "mi_new_nothrow", "group__cpp.html#gaeaded64eda71ed6b1d569d3e723abc4a", null ], [ "mi_new_nothrow", "group__cpp.html#ga5cb4f120d1f7296074256215aa9a9e54", null ],
[ "mi_new_realloc", "group__cpp.html#gaab78a32f55149e9fbf432d5288e38e1e", null ], [ "mi_new_realloc", "group__cpp.html#ga6867d89baf992728e0cc20a1f47db4d0", null ],
[ "mi_new_reallocn", "group__cpp.html#ga756f4b2bc6a7ecd0a90baea8e90c7907", null ] [ "mi_new_reallocn", "group__cpp.html#gaace912ce086682d56f3ce9f7638d9d67", null ]
]; ];

File diff suppressed because it is too large Load diff

View file

@ -1,29 +1,42 @@
var group__extended = var group__extended =
[ [
[ "MI_SMALL_SIZE_MAX", "group__extended.html#ga1ea64283508718d9d645c38efc2f4305", null ], [ "MI_SMALL_SIZE_MAX", "group__extended.html#ga1ea64283508718d9d645c38efc2f4305", null ],
[ "mi_deferred_free_fun", "group__extended.html#ga299dae78d25ce112e384a98b7309c5be", null ], [ "mi_arena_id_t", "group__extended.html#ga99fe38650d0b02e0e0f89ee024db91d3", null ],
[ "mi_error_fun", "group__extended.html#ga251d369cda3f1c2a955c555486ed90e5", null ], [ "mi_deferred_free_fun", "group__extended.html#ga292a45f7dbc7cd23c5352ce1f0002816", null ],
[ "mi_output_fun", "group__extended.html#gad823d23444a4b77a40f66bf075a98a0c", null ], [ "mi_error_fun", "group__extended.html#ga83fc6a688b322261e1c2deab000b0591", null ],
[ "mi_output_fun", "group__extended.html#gadf31cea7d0332a81c8b882cbbdbadb8d", null ],
[ "mi_subproc_id_t", "group__extended.html#ga8c0bcd1fee27c7641e9c3c0d991b3b7d", null ],
[ "mi_arena_area", "group__extended.html#ga9a25a00a22151619a0be91a10af7787f", null ],
[ "mi_collect", "group__extended.html#ga421430e2226d7d468529cec457396756", null ], [ "mi_collect", "group__extended.html#ga421430e2226d7d468529cec457396756", null ],
[ "mi_debug_show_arenas", "group__extended.html#gad7439207f8f71fb6c382a9ea20b997e7", null ],
[ "mi_good_size", "group__extended.html#gac057927cd06c854b45fe7847e921bd47", null ], [ "mi_good_size", "group__extended.html#gac057927cd06c854b45fe7847e921bd47", null ],
[ "mi_heap_new_ex", "group__extended.html#ga3ae360583f4351aa5267ee7e43008faf", null ],
[ "mi_heap_new_in_arena", "group__extended.html#gaaf2d9976576d5efd5544be12848af949", null ],
[ "mi_is_in_heap_region", "group__extended.html#ga5f071b10d4df1c3658e04e7fd67a94e6", null ], [ "mi_is_in_heap_region", "group__extended.html#ga5f071b10d4df1c3658e04e7fd67a94e6", null ],
[ "mi_is_redirected", "group__extended.html#gaad25050b19f30cd79397b227e0157a3f", null ], [ "mi_is_redirected", "group__extended.html#gaad25050b19f30cd79397b227e0157a3f", null ],
[ "mi_malloc_small", "group__extended.html#ga7136c2e55cb22c98ecf95d08d6debb99", null ], [ "mi_malloc_small", "group__extended.html#ga7f050bc6b897da82692174f5fce59cde", null ],
[ "mi_manage_os_memory", "group__extended.html#ga4c6486a1fdcd7a423b5f25fe4be8e0cf", null ], [ "mi_manage_os_memory", "group__extended.html#ga4c6486a1fdcd7a423b5f25fe4be8e0cf", null ],
[ "mi_manage_os_memory_ex", "group__extended.html#ga41ce8525d77bbb60f618fa1029994f6e", null ],
[ "mi_process_info", "group__extended.html#ga7d862c2affd5790381da14eb102a364d", null ], [ "mi_process_info", "group__extended.html#ga7d862c2affd5790381da14eb102a364d", null ],
[ "mi_register_deferred_free", "group__extended.html#ga3460a6ca91af97be4058f523d3cb8ece", null ], [ "mi_register_deferred_free", "group__extended.html#ga3460a6ca91af97be4058f523d3cb8ece", null ],
[ "mi_register_error", "group__extended.html#gaa1d55e0e894be240827e5d87ec3a1f45", null ], [ "mi_register_error", "group__extended.html#gaa1d55e0e894be240827e5d87ec3a1f45", null ],
[ "mi_register_output", "group__extended.html#gae5b17ff027cd2150b43a33040250cf3f", null ], [ "mi_register_output", "group__extended.html#gae5b17ff027cd2150b43a33040250cf3f", null ],
[ "mi_reserve_huge_os_pages_at", "group__extended.html#ga7795a13d20087447281858d2c771cca1", null ], [ "mi_reserve_huge_os_pages_at", "group__extended.html#ga7795a13d20087447281858d2c771cca1", null ],
[ "mi_reserve_huge_os_pages_at_ex", "group__extended.html#ga591aab1c2bc2ca920e33f0f9f9cb5c52", null ],
[ "mi_reserve_huge_os_pages_interleave", "group__extended.html#ga3132f521fb756fc0e8ec0b74fb58df50", null ], [ "mi_reserve_huge_os_pages_interleave", "group__extended.html#ga3132f521fb756fc0e8ec0b74fb58df50", null ],
[ "mi_reserve_os_memory", "group__extended.html#ga00ec3324b6b2591c7fe3677baa30a767", null ], [ "mi_reserve_os_memory", "group__extended.html#ga00ec3324b6b2591c7fe3677baa30a767", null ],
[ "mi_reserve_os_memory_ex", "group__extended.html#ga32f519797fd9a81acb4f52d36e6d751b", null ],
[ "mi_stats_merge", "group__extended.html#ga854b1de8cb067c7316286c28b2fcd3d1", null ], [ "mi_stats_merge", "group__extended.html#ga854b1de8cb067c7316286c28b2fcd3d1", null ],
[ "mi_stats_print", "group__extended.html#ga2d126e5c62d3badc35445e5d84166df2", null ], [ "mi_stats_print", "group__extended.html#ga2d126e5c62d3badc35445e5d84166df2", null ],
[ "mi_stats_print_out", "group__extended.html#ga537f13b299ddf801e49a5a94fde02c79", null ], [ "mi_stats_print_out", "group__extended.html#ga537f13b299ddf801e49a5a94fde02c79", null ],
[ "mi_stats_reset", "group__extended.html#ga3bb8468b8cfcc6e2a61d98aee85c5f99", null ], [ "mi_stats_reset", "group__extended.html#ga3bb8468b8cfcc6e2a61d98aee85c5f99", null ],
[ "mi_subproc_add_current_thread", "group__extended.html#gadbc53414eb68b275588ec001ce1ddc7c", null ],
[ "mi_subproc_delete", "group__extended.html#gaa7d263e9429bac9ac8345c9d25de610e", null ],
[ "mi_subproc_main", "group__extended.html#ga2ecba0d7ebdc99e71bb985c4a1609806", null ],
[ "mi_subproc_new", "group__extended.html#ga8068cac328e41fa2170faef707315243", null ],
[ "mi_thread_done", "group__extended.html#ga0ae4581e85453456a0d658b2b98bf7bf", null ], [ "mi_thread_done", "group__extended.html#ga0ae4581e85453456a0d658b2b98bf7bf", null ],
[ "mi_thread_init", "group__extended.html#gaf8e73efc2cbca9ebfdfb166983a04c17", null ], [ "mi_thread_init", "group__extended.html#gaf8e73efc2cbca9ebfdfb166983a04c17", null ],
[ "mi_thread_stats_print_out", "group__extended.html#gab1dac8476c46cb9eecab767eb40c1525", null ], [ "mi_thread_stats_print_out", "group__extended.html#gab1dac8476c46cb9eecab767eb40c1525", null ],
[ "mi_usable_size", "group__extended.html#ga089c859d9eddc5f9b4bd946cd53cebee", null ], [ "mi_usable_size", "group__extended.html#ga089c859d9eddc5f9b4bd946cd53cebee", null ],
[ "mi_zalloc_small", "group__extended.html#ga220f29f40a44404b0061c15bc1c31152", null ] [ "mi_zalloc_small", "group__extended.html#ga51c47637e81df0e2f13a2d7a2dec123e", null ]
]; ];

File diff suppressed because it is too large Load diff

View file

@ -1,30 +1,30 @@
var group__heap = var group__heap =
[ [
[ "mi_heap_t", "group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2", null ], [ "mi_heap_t", "group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2", null ],
[ "mi_heap_calloc", "group__heap.html#gaa6702b3c48e9e53e50e81b36f5011d55", null ], [ "mi_heap_calloc", "group__heap.html#gac0098aaf231d3e9586c73136d5df95da", null ],
[ "mi_heap_calloc_aligned", "group__heap.html#ga4af03a6e2b93fae77424d93f889705c3", null ], [ "mi_heap_calloc_aligned", "group__heap.html#gacafcc26df827c7a7de5e850217566108", null ],
[ "mi_heap_calloc_aligned_at", "group__heap.html#ga08ca6419a5c057a4d965868998eef487", null ], [ "mi_heap_calloc_aligned_at", "group__heap.html#gaa42ec2079989c4374f2c331d9b35f4e4", null ],
[ "mi_heap_collect", "group__heap.html#ga7922f7495cde30b1984d0e6072419298", null ], [ "mi_heap_collect", "group__heap.html#ga7922f7495cde30b1984d0e6072419298", null ],
[ "mi_heap_delete", "group__heap.html#ga2ab1af8d438819b55319c7ef51d1e409", null ], [ "mi_heap_delete", "group__heap.html#ga2ab1af8d438819b55319c7ef51d1e409", null ],
[ "mi_heap_destroy", "group__heap.html#ga9f9c0844edb9717f4feacd79116b8e0d", null ], [ "mi_heap_destroy", "group__heap.html#ga9f9c0844edb9717f4feacd79116b8e0d", null ],
[ "mi_heap_get_backing", "group__heap.html#ga5d03fbe062ffcf38f0f417fd968357fc", null ], [ "mi_heap_get_backing", "group__heap.html#gac6ac9f0e7be9ab4ff70acfc8dad1235a", null ],
[ "mi_heap_get_default", "group__heap.html#ga8db4cbb87314a989a9a187464d6b5e05", null ], [ "mi_heap_get_default", "group__heap.html#ga14c667a6e2c5d28762d8cb7d4e057909", null ],
[ "mi_heap_malloc", "group__heap.html#ga9cbed01e42c0647907295de92c3fa296", null ], [ "mi_heap_malloc", "group__heap.html#gab374e206c7034e0d899fb934e4f4a863", null ],
[ "mi_heap_malloc_aligned", "group__heap.html#gab5b87e1805306f70df38789fcfcf6653", null ], [ "mi_heap_malloc_aligned", "group__heap.html#ga33f4f05b7fea7af2113c62a4bf882cc5", null ],
[ "mi_heap_malloc_aligned_at", "group__heap.html#ga23acd7680fb0976dde3783254c6c874b", null ], [ "mi_heap_malloc_aligned_at", "group__heap.html#gae7ffc045c3996497a7f3a5f6fe7b8aaa", null ],
[ "mi_heap_malloc_small", "group__heap.html#gaa1a1c7a1f4da6826b5a25b70ef878368", null ], [ "mi_heap_malloc_small", "group__heap.html#ga012c5c8abe22b10043de39ff95909541", null ],
[ "mi_heap_mallocn", "group__heap.html#ga851da6c43fe0b71c1376cee8aef90db0", null ], [ "mi_heap_mallocn", "group__heap.html#gab0f755c0b21c387fe8e9024200faa372", null ],
[ "mi_heap_new", "group__heap.html#ga766f672ba56f2fbfeb9d9dbb0b7f6b11", null ], [ "mi_heap_new", "group__heap.html#gaa718bb226ec0546ba6d1b6cb32179f3a", null ],
[ "mi_heap_realloc", "group__heap.html#gaaef3395f66be48f37bdc8322509c5d81", null ], [ "mi_heap_realloc", "group__heap.html#gac5252d6a2e510bd349e4fcb452e6a93a", null ],
[ "mi_heap_realloc_aligned", "group__heap.html#gafc603b696bd14cae6da28658f950d98c", null ], [ "mi_heap_realloc_aligned", "group__heap.html#gaccf8c249872f30bf1c2493a09197d734", null ],
[ "mi_heap_realloc_aligned_at", "group__heap.html#gaf96c788a1bf553fe2d371de9365e047c", null ], [ "mi_heap_realloc_aligned_at", "group__heap.html#ga6df988a7219d5707f010d5f3eb0dc3f5", null ],
[ "mi_heap_reallocf", "group__heap.html#ga4a21070eb4e7cce018133c8d5f4b0527", null ], [ "mi_heap_reallocf", "group__heap.html#gae7cd171425bee04c683c65a3701f0b4a", null ],
[ "mi_heap_reallocn", "group__heap.html#gac74e94ad9b0c9b57c1c4d88b8825b7a8", null ], [ "mi_heap_reallocn", "group__heap.html#gaccf7bfe10ce510a000d3547d9cf7fa29", null ],
[ "mi_heap_realpath", "group__heap.html#ga00e95ba1e01acac3cfd95bb7a357a6f0", null ], [ "mi_heap_realpath", "group__heap.html#ga55545a3ec6da29c5b4f62e540ecac1e2", null ],
[ "mi_heap_set_default", "group__heap.html#gab8631ec88c8d26641b68b5d25dcd4422", null ], [ "mi_heap_set_default", "group__heap.html#ga349b677dec7da5eacdbc7a385bd62a4a", null ],
[ "mi_heap_strdup", "group__heap.html#ga139d6b09dbf50c3c2523d0f4d1cfdeb5", null ], [ "mi_heap_strdup", "group__heap.html#ga5754e09ccc51dd6bc73885bb6ea21b7a", null ],
[ "mi_heap_strndup", "group__heap.html#ga8e3dbd46650dd26573cf307a2c8f1f5a", null ], [ "mi_heap_strndup", "group__heap.html#gad224df78f1fbee942df8adf023e12cf3", null ],
[ "mi_heap_zalloc", "group__heap.html#ga903104592c8ed53417a3762da6241133", null ], [ "mi_heap_zalloc", "group__heap.html#gabebc796399619d964d8db77aa835e8c1", null ],
[ "mi_heap_zalloc_aligned", "group__heap.html#gaa450a59c6c7ae5fdbd1c2b80a8329ef0", null ], [ "mi_heap_zalloc_aligned", "group__heap.html#ga6466bde8b5712aa34e081a8317f9f471", null ],
[ "mi_heap_zalloc_aligned_at", "group__heap.html#ga45fb43a62776fbebbdf1edd99b527954", null ] [ "mi_heap_zalloc_aligned_at", "group__heap.html#ga484e3d01cd174f78c7e53370e5a7c819", null ]
]; ];

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Basic Allocation</title> <title>mi-malloc: Basic Allocation</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('group__malloc.html',''); initResizable(); }); $(function(){initNavTree('group__malloc.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,94 +91,93 @@ $(document).ready(function(){initNavTree('group__malloc.html',''); initResizable
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#func-members">Functions</a> </div> <a href="#func-members">Functions</a> </div>
<div class="headertitle"> <div class="headertitle"><div class="title">Basic Allocation</div></div>
<div class="title">Basic Allocation</div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<p>The basic allocation interface. <p>The basic allocation interface.
<a href="#details">More...</a></p> <a href="#details">More...</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr> Functions</h2></td></tr>
<tr class="memitem:gaf2c7b89c327d1f60f59e68b9ea644d95"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__malloc.html#gaf2c7b89c327d1f60f59e68b9ea644d95">mi_free</a> (void *p)</td></tr> <tr class="memitem:gaf2c7b89c327d1f60f59e68b9ea644d95" id="r_gaf2c7b89c327d1f60f59e68b9ea644d95"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaf2c7b89c327d1f60f59e68b9ea644d95">mi_free</a> (void *p)</td></tr>
<tr class="memdesc:gaf2c7b89c327d1f60f59e68b9ea644d95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free previously allocated memory. <a href="group__malloc.html#gaf2c7b89c327d1f60f59e68b9ea644d95">More...</a><br /></td></tr> <tr class="memdesc:gaf2c7b89c327d1f60f59e68b9ea644d95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free previously allocated memory. <br /></td></tr>
<tr class="separator:gaf2c7b89c327d1f60f59e68b9ea644d95"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gaf2c7b89c327d1f60f59e68b9ea644d95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3406e8b168bc74c8637b11571a6da83a"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__malloc.html#ga3406e8b168bc74c8637b11571a6da83a">mi_malloc</a> (size_t size)</td></tr> <tr class="memitem:gae1dd97b542420c87ae085e822b1229e8" id="r_gae1dd97b542420c87ae085e822b1229e8"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gae1dd97b542420c87ae085e822b1229e8">mi_malloc</a> (size_t size)</td></tr>
<tr class="memdesc:ga3406e8b168bc74c8637b11571a6da83a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em>size</em> bytes. <a href="group__malloc.html#ga3406e8b168bc74c8637b11571a6da83a">More...</a><br /></td></tr> <tr class="memdesc:gae1dd97b542420c87ae085e822b1229e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em class="arg">size</em> bytes. <br /></td></tr>
<tr class="separator:ga3406e8b168bc74c8637b11571a6da83a"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gae1dd97b542420c87ae085e822b1229e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafdd9d8bb2986e668ba9884f28af38000"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__malloc.html#gafdd9d8bb2986e668ba9884f28af38000">mi_zalloc</a> (size_t size)</td></tr> <tr class="memitem:gae6e38c4403247a7b40d80419e093bfb8" id="r_gae6e38c4403247a7b40d80419e093bfb8"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gae6e38c4403247a7b40d80419e093bfb8">mi_zalloc</a> (size_t size)</td></tr>
<tr class="memdesc:gafdd9d8bb2986e668ba9884f28af38000"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate zero-initialized <code>size</code> bytes. <a href="group__malloc.html#gafdd9d8bb2986e668ba9884f28af38000">More...</a><br /></td></tr> <tr class="memdesc:gae6e38c4403247a7b40d80419e093bfb8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate zero-initialized <code>size</code> bytes. <br /></td></tr>
<tr class="separator:gafdd9d8bb2986e668ba9884f28af38000"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gae6e38c4403247a7b40d80419e093bfb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga97fedb4f7107c592fd7f0f0a8949a57d"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__malloc.html#ga97fedb4f7107c592fd7f0f0a8949a57d">mi_calloc</a> (size_t count, size_t size)</td></tr> <tr class="memitem:ga6686568014b54d1e6c7ac64a076e4f56" id="r_ga6686568014b54d1e6c7ac64a076e4f56"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga6686568014b54d1e6c7ac64a076e4f56">mi_calloc</a> (size_t count, size_t size)</td></tr>
<tr class="memdesc:ga97fedb4f7107c592fd7f0f0a8949a57d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate zero-initialized <em>count</em> elements of <em>size</em> bytes. <a href="group__malloc.html#ga97fedb4f7107c592fd7f0f0a8949a57d">More...</a><br /></td></tr> <tr class="memdesc:ga6686568014b54d1e6c7ac64a076e4f56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate zero-initialized <em class="arg">count</em> elements of <em class="arg">size</em> bytes. <br /></td></tr>
<tr class="separator:ga97fedb4f7107c592fd7f0f0a8949a57d"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga6686568014b54d1e6c7ac64a076e4f56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf11eb497da57bdfb2de65eb191c69db6"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__malloc.html#gaf11eb497da57bdfb2de65eb191c69db6">mi_realloc</a> (void *p, size_t newsize)</td></tr> <tr class="memitem:ga0621af6a5e3aa384e6a1b548958bf583" id="r_ga0621af6a5e3aa384e6a1b548958bf583"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga0621af6a5e3aa384e6a1b548958bf583">mi_realloc</a> (void *p, size_t newsize)</td></tr>
<tr class="memdesc:gaf11eb497da57bdfb2de65eb191c69db6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Re-allocate memory to <em>newsize</em> bytes. <a href="group__malloc.html#gaf11eb497da57bdfb2de65eb191c69db6">More...</a><br /></td></tr> <tr class="memdesc:ga0621af6a5e3aa384e6a1b548958bf583"><td class="mdescLeft">&#160;</td><td class="mdescRight">Re-allocate memory to <em class="arg">newsize</em> bytes. <br /></td></tr>
<tr class="separator:gaf11eb497da57bdfb2de65eb191c69db6"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga0621af6a5e3aa384e6a1b548958bf583"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga23a0fbb452b5dce8e31fab1a1958cacc"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__malloc.html#ga23a0fbb452b5dce8e31fab1a1958cacc">mi_recalloc</a> (void *p, size_t count, size_t size)</td></tr> <tr class="memitem:ga23a0fbb452b5dce8e31fab1a1958cacc" id="r_ga23a0fbb452b5dce8e31fab1a1958cacc"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga23a0fbb452b5dce8e31fab1a1958cacc">mi_recalloc</a> (void *p, size_t count, size_t size)</td></tr>
<tr class="memdesc:ga23a0fbb452b5dce8e31fab1a1958cacc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Re-allocate memory to <em>count</em> elements of <em>size</em> bytes, with extra memory initialized to zero. <a href="group__malloc.html#ga23a0fbb452b5dce8e31fab1a1958cacc">More...</a><br /></td></tr> <tr class="memdesc:ga23a0fbb452b5dce8e31fab1a1958cacc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Re-allocate memory to <em class="arg">count</em> elements of <em class="arg">size</em> bytes, with extra memory initialized to zero. <br /></td></tr>
<tr class="separator:ga23a0fbb452b5dce8e31fab1a1958cacc"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga23a0fbb452b5dce8e31fab1a1958cacc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaee66a1d483c3e28f585525fb96707e4"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__malloc.html#gaaee66a1d483c3e28f585525fb96707e4">mi_expand</a> (void *p, size_t newsize)</td></tr> <tr class="memitem:ga19299856216cfbb08e2628593654dfb0" id="r_ga19299856216cfbb08e2628593654dfb0"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga19299856216cfbb08e2628593654dfb0">mi_expand</a> (void *p, size_t newsize)</td></tr>
<tr class="memdesc:gaaee66a1d483c3e28f585525fb96707e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Try to re-allocate memory to <em>newsize</em> bytes <em>in place</em>. <a href="group__malloc.html#gaaee66a1d483c3e28f585525fb96707e4">More...</a><br /></td></tr> <tr class="memdesc:ga19299856216cfbb08e2628593654dfb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Try to re-allocate memory to <em class="arg">newsize</em> bytes <em>in place</em>. <br /></td></tr>
<tr class="separator:gaaee66a1d483c3e28f585525fb96707e4"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga19299856216cfbb08e2628593654dfb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0b05e2bf0f73e7401ae08597ff782ac6"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__malloc.html#ga0b05e2bf0f73e7401ae08597ff782ac6">mi_mallocn</a> (size_t count, size_t size)</td></tr> <tr class="memitem:ga61f46bade3db76ca24aaafedc40de7b6" id="r_ga61f46bade3db76ca24aaafedc40de7b6"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga61f46bade3db76ca24aaafedc40de7b6">mi_mallocn</a> (size_t count, size_t size)</td></tr>
<tr class="memdesc:ga0b05e2bf0f73e7401ae08597ff782ac6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em>count</em> elements of <em>size</em> bytes. <a href="group__malloc.html#ga0b05e2bf0f73e7401ae08597ff782ac6">More...</a><br /></td></tr> <tr class="memdesc:ga61f46bade3db76ca24aaafedc40de7b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em class="arg">count</em> elements of <em class="arg">size</em> bytes. <br /></td></tr>
<tr class="separator:ga0b05e2bf0f73e7401ae08597ff782ac6"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga61f46bade3db76ca24aaafedc40de7b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga61d57b4144ba24fba5c1e9b956d13853"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__malloc.html#ga61d57b4144ba24fba5c1e9b956d13853">mi_reallocn</a> (void *p, size_t count, size_t size)</td></tr> <tr class="memitem:ga8bddfb4a1270a0854bbcf44cb3980467" id="r_ga8bddfb4a1270a0854bbcf44cb3980467"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga8bddfb4a1270a0854bbcf44cb3980467">mi_reallocn</a> (void *p, size_t count, size_t size)</td></tr>
<tr class="memdesc:ga61d57b4144ba24fba5c1e9b956d13853"><td class="mdescLeft">&#160;</td><td class="mdescRight">Re-allocate memory to <em>count</em> elements of <em>size</em> bytes. <a href="group__malloc.html#ga61d57b4144ba24fba5c1e9b956d13853">More...</a><br /></td></tr> <tr class="memdesc:ga8bddfb4a1270a0854bbcf44cb3980467"><td class="mdescLeft">&#160;</td><td class="mdescRight">Re-allocate memory to <em class="arg">count</em> elements of <em class="arg">size</em> bytes. <br /></td></tr>
<tr class="separator:ga61d57b4144ba24fba5c1e9b956d13853"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga8bddfb4a1270a0854bbcf44cb3980467"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafe68ac7c5e24a65cd55c9d6b152211a0"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__malloc.html#gafe68ac7c5e24a65cd55c9d6b152211a0">mi_reallocf</a> (void *p, size_t newsize)</td></tr> <tr class="memitem:ga4dc3a4067037b151a64629fe8a332641" id="r_ga4dc3a4067037b151a64629fe8a332641"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga4dc3a4067037b151a64629fe8a332641">mi_reallocf</a> (void *p, size_t newsize)</td></tr>
<tr class="memdesc:gafe68ac7c5e24a65cd55c9d6b152211a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Re-allocate memory to <em>newsize</em> bytes,. <a href="group__malloc.html#gafe68ac7c5e24a65cd55c9d6b152211a0">More...</a><br /></td></tr> <tr class="memdesc:ga4dc3a4067037b151a64629fe8a332641"><td class="mdescLeft">&#160;</td><td class="mdescRight">Re-allocate memory to <em class="arg">newsize</em> bytes,. <br /></td></tr>
<tr class="separator:gafe68ac7c5e24a65cd55c9d6b152211a0"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga4dc3a4067037b151a64629fe8a332641"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac7cffe13f1f458ed16789488bf92b9b2"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__malloc.html#gac7cffe13f1f458ed16789488bf92b9b2">mi_strdup</a> (const char *s)</td></tr> <tr class="memitem:ga245ac90ebc2cfdd17de599e5fea59889" id="r_ga245ac90ebc2cfdd17de599e5fea59889"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga245ac90ebc2cfdd17de599e5fea59889">mi_strdup</a> (const char *s)</td></tr>
<tr class="memdesc:gac7cffe13f1f458ed16789488bf92b9b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate and duplicate a string. <a href="group__malloc.html#gac7cffe13f1f458ed16789488bf92b9b2">More...</a><br /></td></tr> <tr class="memdesc:ga245ac90ebc2cfdd17de599e5fea59889"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate and duplicate a string. <br /></td></tr>
<tr class="separator:gac7cffe13f1f458ed16789488bf92b9b2"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga245ac90ebc2cfdd17de599e5fea59889"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaabf971c2571891433477e2d21a35266"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__malloc.html#gaaabf971c2571891433477e2d21a35266">mi_strndup</a> (const char *s, size_t n)</td></tr> <tr class="memitem:ga486d0d26b3b3794f6d1cdb41a9aed92d" id="r_ga486d0d26b3b3794f6d1cdb41a9aed92d"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga486d0d26b3b3794f6d1cdb41a9aed92d">mi_strndup</a> (const char *s, size_t n)</td></tr>
<tr class="memdesc:gaaabf971c2571891433477e2d21a35266"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate and duplicate a string up to <em>n</em> bytes. <a href="group__malloc.html#gaaabf971c2571891433477e2d21a35266">More...</a><br /></td></tr> <tr class="memdesc:ga486d0d26b3b3794f6d1cdb41a9aed92d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate and duplicate a string up to <em class="arg">n</em> bytes. <br /></td></tr>
<tr class="separator:gaaabf971c2571891433477e2d21a35266"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga486d0d26b3b3794f6d1cdb41a9aed92d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga08cec32dd5bbe7da91c78d19f1b5bebe"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__malloc.html#ga08cec32dd5bbe7da91c78d19f1b5bebe">mi_realpath</a> (const char *fname, char *resolved_name)</td></tr> <tr class="memitem:ga94c3afcc086e85d75a57e9f76b9b71dd" id="r_ga94c3afcc086e85d75a57e9f76b9b71dd"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga94c3afcc086e85d75a57e9f76b9b71dd">mi_realpath</a> (const char *fname, char *resolved_name)</td></tr>
<tr class="memdesc:ga08cec32dd5bbe7da91c78d19f1b5bebe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resolve a file path name. <a href="group__malloc.html#ga08cec32dd5bbe7da91c78d19f1b5bebe">More...</a><br /></td></tr> <tr class="memdesc:ga94c3afcc086e85d75a57e9f76b9b71dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resolve a file path name. <br /></td></tr>
<tr class="separator:ga08cec32dd5bbe7da91c78d19f1b5bebe"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga94c3afcc086e85d75a57e9f76b9b71dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table> </table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>The basic allocation interface. </p> <p>The basic allocation interface. </p>
<h2 class="groupheader">Function Documentation</h2> <h2 class="groupheader">Function Documentation</h2>
<a id="ga97fedb4f7107c592fd7f0f0a8949a57d"></a> <a id="ga6686568014b54d1e6c7ac64a076e4f56" name="ga6686568014b54d1e6c7ac64a076e4f56"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga97fedb4f7107c592fd7f0f0a8949a57d">&#9670;&nbsp;</a></span>mi_calloc()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga6686568014b54d1e6c7ac64a076e4f56">&#9670;&#160;</a></span>mi_calloc()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_calloc </td> <td class="memname">void * mi_calloc </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>count</em></span>, </td>
<td class="paramname"><em>count</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Allocate zero-initialized <em>count</em> elements of <em>size</em> bytes. </p> <p>Allocate zero-initialized <em class="arg">count</em> elements of <em class="arg">size</em> bytes. </p>
<dl class="params"><dt>Parameters</dt><dd> <dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">count</td><td>number of elements. </td></tr> <tr><td class="paramname">count</td><td>number of elements. </td></tr>
@ -183,51 +185,44 @@ Functions</h2></td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>pointer to the allocated memory of <em>size*<em>count</em> bytes</em>, or <em>NULL</em> if either out of memory or when <code>count*size</code> overflows.</dd></dl> <dl class="section return"><dt>Returns</dt><dd>pointer to the allocated memory of <em class="arg">size*<em class="arg">count</em> bytes</em>, or <em class="arg">NULL</em> if either out of memory or when <code>count*size</code> overflows.</dd></dl>
<p>Returns a unique pointer if called with either <em>size</em> or <em>count</em> of 0. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__malloc.html#gafdd9d8bb2986e668ba9884f28af38000" title="Allocate zero-initialized size bytes.">mi_zalloc()</a> </dd></dl> <p>Returns a unique pointer if called with either <em class="arg">size</em> or <em class="arg">count</em> of 0. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="#gae6e38c4403247a7b40d80419e093bfb8" title="Allocate zero-initialized size bytes.">mi_zalloc()</a> </dd></dl>
</div> </div>
</div> </div>
<a id="gaaee66a1d483c3e28f585525fb96707e4"></a> <a id="ga19299856216cfbb08e2628593654dfb0" name="ga19299856216cfbb08e2628593654dfb0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaaee66a1d483c3e28f585525fb96707e4">&#9670;&nbsp;</a></span>mi_expand()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga19299856216cfbb08e2628593654dfb0">&#9670;&#160;</a></span>mi_expand()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_expand </td> <td class="memname">void * mi_expand </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newsize</em></span>&#160;)</td>
<td class="paramname"><em>newsize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Try to re-allocate memory to <em>newsize</em> bytes <em>in place</em>. </p> <p>Try to re-allocate memory to <em class="arg">newsize</em> bytes <em>in place</em>. </p>
<dl class="params"><dt>Parameters</dt><dd> <dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">p</td><td>pointer to previously allocated memory (or <em>NULL</em>). </td></tr> <tr><td class="paramname">p</td><td>pointer to previously allocated memory (or <em class="arg">NULL</em>). </td></tr>
<tr><td class="paramname">newsize</td><td>the new required size in bytes. </td></tr> <tr><td class="paramname">newsize</td><td>the new required size in bytes. </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>pointer to the re-allocated memory of <em>newsize</em> bytes (always equal to <em>p</em>), or <em>NULL</em> if either out of memory or if the memory could not be expanded in place. If <em>NULL</em> is returned, the pointer <em>p</em> is not freed. Otherwise the original pointer is returned as the reallocated result since it fits in-place with the new size. If <em>newsize</em> is larger than the original <em>size</em> allocated for <em>p</em>, the bytes after <em>size</em> are uninitialized. </dd></dl> <dl class="section return"><dt>Returns</dt><dd>pointer to the re-allocated memory of <em class="arg">newsize</em> bytes (always equal to <em class="arg">p</em>), or <em class="arg">NULL</em> if either out of memory or if the memory could not be expanded in place. If <em class="arg">NULL</em> is returned, the pointer <em class="arg">p</em> is not freed. Otherwise the original pointer is returned as the reallocated result since it fits in-place with the new size. If <em class="arg">newsize</em> is larger than the original <em class="arg">size</em> allocated for <em class="arg">p</em>, the bytes after <em class="arg">size</em> are uninitialized. </dd></dl>
</div> </div>
</div> </div>
<a id="gaf2c7b89c327d1f60f59e68b9ea644d95"></a> <a id="gaf2c7b89c327d1f60f59e68b9ea644d95" name="gaf2c7b89c327d1f60f59e68b9ea644d95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf2c7b89c327d1f60f59e68b9ea644d95">&#9670;&nbsp;</a></span>mi_free()</h2> <h2 class="memtitle"><span class="permalink"><a href="#gaf2c7b89c327d1f60f59e68b9ea644d95">&#9670;&#160;</a></span>mi_free()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -235,77 +230,68 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">void mi_free </td> <td class="memname">void mi_free </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span></td><td>)</td>
<td class="paramname"><em>p</em></td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Free previously allocated memory. </p> <p>Free previously allocated memory. </p>
<p>The pointer <code>p</code> must have been allocated before (or be <em>NULL</em>). </p><dl class="params"><dt>Parameters</dt><dd> <p>The pointer <code>p</code> must have been allocated before (or be <em class="arg">NULL</em>). </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">p</td><td>pointer to free, or <em>NULL</em>. </td></tr> <tr><td class="paramname">p</td><td>pointer to free, or <em class="arg">NULL</em>. </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
</div> </div>
</div> </div>
<a id="ga3406e8b168bc74c8637b11571a6da83a"></a> <a id="gae1dd97b542420c87ae085e822b1229e8" name="gae1dd97b542420c87ae085e822b1229e8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3406e8b168bc74c8637b11571a6da83a">&#9670;&nbsp;</a></span>mi_malloc()</h2> <h2 class="memtitle"><span class="permalink"><a href="#gae1dd97b542420c87ae085e822b1229e8">&#9670;&#160;</a></span>mi_malloc()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_malloc </td> <td class="memname">void * mi_malloc </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span></td><td>)</td>
<td class="paramname"><em>size</em></td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Allocate <em>size</em> bytes. </p> <p>Allocate <em class="arg">size</em> bytes. </p>
<dl class="params"><dt>Parameters</dt><dd> <dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">size</td><td>number of bytes to allocate. </td></tr> <tr><td class="paramname">size</td><td>number of bytes to allocate. </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>pointer to the allocated memory or <em>NULL</em> if out of memory. Returns a unique pointer if called with <em>size</em> 0. </dd></dl> <dl class="section return"><dt>Returns</dt><dd>pointer to the allocated memory or <em class="arg">NULL</em> if out of memory. Returns a unique pointer if called with <em class="arg">size</em> 0. </dd></dl>
</div> </div>
</div> </div>
<a id="ga0b05e2bf0f73e7401ae08597ff782ac6"></a> <a id="ga61f46bade3db76ca24aaafedc40de7b6" name="ga61f46bade3db76ca24aaafedc40de7b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0b05e2bf0f73e7401ae08597ff782ac6">&#9670;&nbsp;</a></span>mi_mallocn()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga61f46bade3db76ca24aaafedc40de7b6">&#9670;&#160;</a></span>mi_mallocn()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_mallocn </td> <td class="memname">void * mi_mallocn </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>count</em></span>, </td>
<td class="paramname"><em>count</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Allocate <em>count</em> elements of <em>size</em> bytes. </p> <p>Allocate <em class="arg">count</em> elements of <em class="arg">size</em> bytes. </p>
<dl class="params"><dt>Parameters</dt><dd> <dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">count</td><td>The number of elements. </td></tr> <tr><td class="paramname">count</td><td>The number of elements. </td></tr>
@ -313,159 +299,130 @@ Functions</h2></td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to a block of <em>count</em> * <em>size</em> bytes, or <em>NULL</em> if out of memory or if <em>count</em> * <em>size</em> overflows.</dd></dl> <dl class="section return"><dt>Returns</dt><dd>A pointer to a block of <em class="arg">count</em> * <em class="arg">size</em> bytes, or <em class="arg">NULL</em> if out of memory or if <em class="arg">count</em> * <em class="arg">size</em> overflows.</dd></dl>
<p>If there is no overflow, it behaves exactly like <code>mi_malloc(p,count*size)</code>. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__malloc.html#ga97fedb4f7107c592fd7f0f0a8949a57d" title="Allocate zero-initialized count elements of size bytes.">mi_calloc()</a> </dd> <p>If there is no overflow, it behaves exactly like <code>mi_malloc(count*size)</code>. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="#ga6686568014b54d1e6c7ac64a076e4f56" title="Allocate zero-initialized count elements of size bytes.">mi_calloc()</a> </dd>
<dd> <dd>
mi_zallocn() </dd></dl> mi_zallocn() </dd></dl>
</div> </div>
</div> </div>
<a id="gaf11eb497da57bdfb2de65eb191c69db6"></a> <a id="ga0621af6a5e3aa384e6a1b548958bf583" name="ga0621af6a5e3aa384e6a1b548958bf583"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf11eb497da57bdfb2de65eb191c69db6">&#9670;&nbsp;</a></span>mi_realloc()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga0621af6a5e3aa384e6a1b548958bf583">&#9670;&#160;</a></span>mi_realloc()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_realloc </td> <td class="memname">void * mi_realloc </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newsize</em></span>&#160;)</td>
<td class="paramname"><em>newsize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Re-allocate memory to <em>newsize</em> bytes. </p> <p>Re-allocate memory to <em class="arg">newsize</em> bytes. </p>
<dl class="params"><dt>Parameters</dt><dd> <dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">p</td><td>pointer to previously allocated memory (or <em>NULL</em>). </td></tr> <tr><td class="paramname">p</td><td>pointer to previously allocated memory (or <em class="arg">NULL</em>). </td></tr>
<tr><td class="paramname">newsize</td><td>the new required size in bytes. </td></tr> <tr><td class="paramname">newsize</td><td>the new required size in bytes. </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>pointer to the re-allocated memory of <em>newsize</em> bytes, or <em>NULL</em> if out of memory. If <em>NULL</em> is returned, the pointer <em>p</em> is not freed. Otherwise the original pointer is either freed or returned as the reallocated result (in case it fits in-place with the new size). If the pointer <em>p</em> is <em>NULL</em>, it behaves as <em>mi_malloc</em>(<em>newsize</em>). If <em>newsize</em> is larger than the original <em>size</em> allocated for <em>p</em>, the bytes after <em>size</em> are uninitialized. </dd></dl> <dl class="section return"><dt>Returns</dt><dd>pointer to the re-allocated memory of <em class="arg">newsize</em> bytes, or <em class="arg">NULL</em> if out of memory. If <em class="arg">NULL</em> is returned, the pointer <em class="arg">p</em> is not freed. Otherwise the original pointer is either freed or returned as the reallocated result (in case it fits in-place with the new size). If the pointer <em class="arg">p</em> is <em class="arg">NULL</em>, it behaves as <em class="arg">mi_malloc</em>(<em class="arg">newsize</em>). If <em class="arg">newsize</em> is larger than the original <em class="arg">size</em> allocated for <em class="arg">p</em>, the bytes after <em class="arg">size</em> are uninitialized. </dd></dl>
</div> </div>
</div> </div>
<a id="gafe68ac7c5e24a65cd55c9d6b152211a0"></a> <a id="ga4dc3a4067037b151a64629fe8a332641" name="ga4dc3a4067037b151a64629fe8a332641"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafe68ac7c5e24a65cd55c9d6b152211a0">&#9670;&nbsp;</a></span>mi_reallocf()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga4dc3a4067037b151a64629fe8a332641">&#9670;&#160;</a></span>mi_reallocf()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_reallocf </td> <td class="memname">void * mi_reallocf </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newsize</em></span>&#160;)</td>
<td class="paramname"><em>newsize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Re-allocate memory to <em>newsize</em> bytes,. </p> <p>Re-allocate memory to <em class="arg">newsize</em> bytes,. </p>
<dl class="params"><dt>Parameters</dt><dd> <dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">p</td><td>pointer to previously allocated memory (or <em>NULL</em>). </td></tr> <tr><td class="paramname">p</td><td>pointer to previously allocated memory (or <em class="arg">NULL</em>). </td></tr>
<tr><td class="paramname">newsize</td><td>the new required size in bytes. </td></tr> <tr><td class="paramname">newsize</td><td>the new required size in bytes. </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>pointer to the re-allocated memory of <em>newsize</em> bytes, or <em>NULL</em> if out of memory.</dd></dl> <dl class="section return"><dt>Returns</dt><dd>pointer to the re-allocated memory of <em class="arg">newsize</em> bytes, or <em class="arg">NULL</em> if out of memory.</dd></dl>
<p>In contrast to <a class="el" href="group__malloc.html#gaf11eb497da57bdfb2de65eb191c69db6" title="Re-allocate memory to newsize bytes.">mi_realloc()</a>, if <em>NULL</em> is returned, the original pointer <em>p</em> is freed (if it was not <em>NULL</em> itself). Otherwise the original pointer is either freed or returned as the reallocated result (in case it fits in-place with the new size). If the pointer <em>p</em> is <em>NULL</em>, it behaves as <em>mi_malloc</em>(<em>newsize</em>). If <em>newsize</em> is larger than the original <em>size</em> allocated for <em>p</em>, the bytes after <em>size</em> are uninitialized.</p> <p>In contrast to <a class="el" href="#ga0621af6a5e3aa384e6a1b548958bf583" title="Re-allocate memory to newsize bytes.">mi_realloc()</a>, if <em class="arg">NULL</em> is returned, the original pointer <em class="arg">p</em> is freed (if it was not <em class="arg">NULL</em> itself). Otherwise the original pointer is either freed or returned as the reallocated result (in case it fits in-place with the new size). If the pointer <em class="arg">p</em> is <em class="arg">NULL</em>, it behaves as <em class="arg">mi_malloc</em>(<em class="arg">newsize</em>). If <em class="arg">newsize</em> is larger than the original <em class="arg">size</em> allocated for <em class="arg">p</em>, the bytes after <em class="arg">size</em> are uninitialized.</p>
<dl class="section see"><dt>See also</dt><dd><a href="https://www.freebsd.org/cgi/man.cgi?query=reallocf">reallocf</a> (on BSD) </dd></dl> <dl class="section see"><dt>See also</dt><dd><a href="https://www.freebsd.org/cgi/man.cgi?query=reallocf">reallocf</a> (on BSD) </dd></dl>
</div> </div>
</div> </div>
<a id="ga61d57b4144ba24fba5c1e9b956d13853"></a> <a id="ga8bddfb4a1270a0854bbcf44cb3980467" name="ga8bddfb4a1270a0854bbcf44cb3980467"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga61d57b4144ba24fba5c1e9b956d13853">&#9670;&nbsp;</a></span>mi_reallocn()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga8bddfb4a1270a0854bbcf44cb3980467">&#9670;&#160;</a></span>mi_reallocn()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_reallocn </td> <td class="memname">void * mi_reallocn </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>count</em></span>, </td>
<td class="paramname"><em>count</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Re-allocate memory to <em>count</em> elements of <em>size</em> bytes. </p> <p>Re-allocate memory to <em class="arg">count</em> elements of <em class="arg">size</em> bytes. </p>
<dl class="params"><dt>Parameters</dt><dd> <dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">p</td><td>Pointer to a previously allocated block (or <em>NULL</em>). </td></tr> <tr><td class="paramname">p</td><td>Pointer to a previously allocated block (or <em class="arg">NULL</em>). </td></tr>
<tr><td class="paramname">count</td><td>The number of elements. </td></tr> <tr><td class="paramname">count</td><td>The number of elements. </td></tr>
<tr><td class="paramname">size</td><td>The size of each element. </td></tr> <tr><td class="paramname">size</td><td>The size of each element. </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to a re-allocated block of <em>count</em> * <em>size</em> bytes, or <em>NULL</em> if out of memory or if <em>count</em> * <em>size</em> overflows.</dd></dl> <dl class="section return"><dt>Returns</dt><dd>A pointer to a re-allocated block of <em class="arg">count</em> * <em class="arg">size</em> bytes, or <em class="arg">NULL</em> if out of memory or if <em class="arg">count</em> * <em class="arg">size</em> overflows.</dd></dl>
<p>If there is no overflow, it behaves exactly like <code>mi_realloc(p,count*size)</code>. </p><dl class="section see"><dt>See also</dt><dd><a href="http://man.openbsd.org/reallocarray">reallocarray()</a> (on BSD) </dd></dl> <p>If there is no overflow, it behaves exactly like <code>mi_realloc(p,count*size)</code>. </p><dl class="section see"><dt>See also</dt><dd><a href="http://man.openbsd.org/reallocarray">reallocarray()</a> (on BSD) </dd></dl>
</div> </div>
</div> </div>
<a id="ga08cec32dd5bbe7da91c78d19f1b5bebe"></a> <a id="ga94c3afcc086e85d75a57e9f76b9b71dd" name="ga94c3afcc086e85d75a57e9f76b9b71dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga08cec32dd5bbe7da91c78d19f1b5bebe">&#9670;&nbsp;</a></span>mi_realpath()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga94c3afcc086e85d75a57e9f76b9b71dd">&#9670;&#160;</a></span>mi_realpath()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">char* mi_realpath </td> <td class="memname">char * mi_realpath </td>
<td>(</td> <td>(</td>
<td class="paramtype">const char *&#160;</td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>fname</em></span>, </td>
<td class="paramname"><em>fname</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">char *&#160;</td> <td class="paramtype">char *</td> <td class="paramname"><span class="paramname"><em>resolved_name</em></span>&#160;)</td>
<td class="paramname"><em>resolved_name</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
@ -474,18 +431,18 @@ mi_zallocn() </dd></dl>
<dl class="params"><dt>Parameters</dt><dd> <dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">fname</td><td>File name. </td></tr> <tr><td class="paramname">fname</td><td>File name. </td></tr>
<tr><td class="paramname">resolved_name</td><td>Should be <em>NULL</em> (but can also point to a buffer of at least <em>PATH_MAX</em> bytes). </td></tr> <tr><td class="paramname">resolved_name</td><td>Should be <em class="arg">NULL</em> (but can also point to a buffer of at least <em class="arg">PATH_MAX</em> bytes). </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>If successful a pointer to the resolved absolute file name, or <em>NULL</em> on failure (with <em>errno</em> set to the error code).</dd></dl> <dl class="section return"><dt>Returns</dt><dd>If successful a pointer to the resolved absolute file name, or <em class="arg">NULL</em> on failure (with <em class="arg">errno</em> set to the error code).</dd></dl>
<p>If <em>resolved_name</em> was <em>NULL</em>, the returned result should be freed with <a class="el" href="group__malloc.html#gaf2c7b89c327d1f60f59e68b9ea644d95" title="Free previously allocated memory.">mi_free()</a>.</p> <p>If <em class="arg">resolved_name</em> was <em class="arg">NULL</em>, the returned result should be freed with <a class="el" href="#gaf2c7b89c327d1f60f59e68b9ea644d95" title="Free previously allocated memory.">mi_free()</a>.</p>
<p>Replacement for the standard <a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/realpath.html">realpath()</a> such that <a class="el" href="group__malloc.html#gaf2c7b89c327d1f60f59e68b9ea644d95" title="Free previously allocated memory.">mi_free()</a> can be used on the returned result (if <em>resolved_name</em> was <em>NULL</em>). </p> <p>Replacement for the standard <a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/realpath.html">realpath()</a> such that <a class="el" href="#gaf2c7b89c327d1f60f59e68b9ea644d95" title="Free previously allocated memory.">mi_free()</a> can be used on the returned result (if <em class="arg">resolved_name</em> was <em class="arg">NULL</em>). </p>
</div> </div>
</div> </div>
<a id="ga23a0fbb452b5dce8e31fab1a1958cacc"></a> <a id="ga23a0fbb452b5dce8e31fab1a1958cacc" name="ga23a0fbb452b5dce8e31fab1a1958cacc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga23a0fbb452b5dce8e31fab1a1958cacc">&#9670;&nbsp;</a></span>mi_recalloc()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga23a0fbb452b5dce8e31fab1a1958cacc">&#9670;&#160;</a></span>mi_recalloc()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -493,56 +450,47 @@ mi_zallocn() </dd></dl>
<tr> <tr>
<td class="memname">void * mi_recalloc </td> <td class="memname">void * mi_recalloc </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>count</em></span>, </td>
<td class="paramname"><em>count</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Re-allocate memory to <em>count</em> elements of <em>size</em> bytes, with extra memory initialized to zero. </p> <p>Re-allocate memory to <em class="arg">count</em> elements of <em class="arg">size</em> bytes, with extra memory initialized to zero. </p>
<dl class="params"><dt>Parameters</dt><dd> <dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">p</td><td>Pointer to a previously allocated block (or <em>NULL</em>). </td></tr> <tr><td class="paramname">p</td><td>Pointer to a previously allocated block (or <em class="arg">NULL</em>). </td></tr>
<tr><td class="paramname">count</td><td>The number of elements. </td></tr> <tr><td class="paramname">count</td><td>The number of elements. </td></tr>
<tr><td class="paramname">size</td><td>The size of each element. </td></tr> <tr><td class="paramname">size</td><td>The size of each element. </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to a re-allocated block of <em>count</em> * <em>size</em> bytes, or <em>NULL</em> if out of memory or if <em>count</em> * <em>size</em> overflows.</dd></dl> <dl class="section return"><dt>Returns</dt><dd>A pointer to a re-allocated block of <em class="arg">count</em> * <em class="arg">size</em> bytes, or <em class="arg">NULL</em> if out of memory or if <em class="arg">count</em> * <em class="arg">size</em> overflows.</dd></dl>
<p>If there is no overflow, it behaves exactly like <code>mi_rezalloc(p,count*size)</code>. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__malloc.html#ga61d57b4144ba24fba5c1e9b956d13853" title="Re-allocate memory to count elements of size bytes.">mi_reallocn()</a> </dd> <p>If there is no overflow, it behaves exactly like <code>mi_rezalloc(p,count*size)</code>. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="#ga8bddfb4a1270a0854bbcf44cb3980467" title="Re-allocate memory to count elements of size bytes.">mi_reallocn()</a> </dd>
<dd> <dd>
<a href="http://man.openbsd.org/reallocarray">recallocarray()</a> (on BSD). </dd></dl> <a href="http://man.openbsd.org/reallocarray">recallocarray()</a> (on BSD). </dd></dl>
</div> </div>
</div> </div>
<a id="gac7cffe13f1f458ed16789488bf92b9b2"></a> <a id="ga245ac90ebc2cfdd17de599e5fea59889" name="ga245ac90ebc2cfdd17de599e5fea59889"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac7cffe13f1f458ed16789488bf92b9b2">&#9670;&nbsp;</a></span>mi_strdup()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga245ac90ebc2cfdd17de599e5fea59889">&#9670;&#160;</a></span>mi_strdup()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">char* mi_strdup </td> <td class="memname">char * mi_strdup </td>
<td>(</td> <td>(</td>
<td class="paramtype">const char *&#160;</td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>s</em></span></td><td>)</td>
<td class="paramname"><em>s</em></td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
@ -551,65 +499,57 @@ mi_zallocn() </dd></dl>
<p>Allocate and duplicate a string. </p> <p>Allocate and duplicate a string. </p>
<dl class="params"><dt>Parameters</dt><dd> <dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">s</td><td>string to duplicate (or <em>NULL</em>). </td></tr> <tr><td class="paramname">s</td><td>string to duplicate (or <em class="arg">NULL</em>). </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer to newly allocated memory initialized to string <em>s</em>, or <em>NULL</em> if either out of memory or if <em>s</em> is <em>NULL</em>.</dd></dl> <dl class="section return"><dt>Returns</dt><dd>a pointer to newly allocated memory initialized to string <em class="arg">s</em>, or <em class="arg">NULL</em> if either out of memory or if <em class="arg">s</em> is <em class="arg">NULL</em>.</dd></dl>
<p>Replacement for the standard <a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/strdup.html">strdup()</a> such that <a class="el" href="group__malloc.html#gaf2c7b89c327d1f60f59e68b9ea644d95" title="Free previously allocated memory.">mi_free()</a> can be used on the returned result. </p> <p>Replacement for the standard <a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/strdup.html">strdup()</a> such that <a class="el" href="#gaf2c7b89c327d1f60f59e68b9ea644d95" title="Free previously allocated memory.">mi_free()</a> can be used on the returned result. </p>
</div> </div>
</div> </div>
<a id="gaaabf971c2571891433477e2d21a35266"></a> <a id="ga486d0d26b3b3794f6d1cdb41a9aed92d" name="ga486d0d26b3b3794f6d1cdb41a9aed92d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaaabf971c2571891433477e2d21a35266">&#9670;&nbsp;</a></span>mi_strndup()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga486d0d26b3b3794f6d1cdb41a9aed92d">&#9670;&#160;</a></span>mi_strndup()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">char* mi_strndup </td> <td class="memname">char * mi_strndup </td>
<td>(</td> <td>(</td>
<td class="paramtype">const char *&#160;</td> <td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>s</em></span>, </td>
<td class="paramname"><em>s</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>n</em></span>&#160;)</td>
<td class="paramname"><em>n</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Allocate and duplicate a string up to <em>n</em> bytes. </p> <p>Allocate and duplicate a string up to <em class="arg">n</em> bytes. </p>
<dl class="params"><dt>Parameters</dt><dd> <dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">s</td><td>string to duplicate (or <em>NULL</em>). </td></tr> <tr><td class="paramname">s</td><td>string to duplicate (or <em class="arg">NULL</em>). </td></tr>
<tr><td class="paramname">n</td><td>maximum number of bytes to copy (excluding the terminating zero). </td></tr> <tr><td class="paramname">n</td><td>maximum number of bytes to copy (excluding the terminating zero). </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer to newly allocated memory initialized to string <em>s</em> up to the first <em>n</em> bytes (and always zero terminated), or <em>NULL</em> if either out of memory or if <em>s</em> is <em>NULL</em>.</dd></dl> <dl class="section return"><dt>Returns</dt><dd>a pointer to newly allocated memory initialized to string <em class="arg">s</em> up to the first <em class="arg">n</em> bytes (and always zero terminated), or <em class="arg">NULL</em> if either out of memory or if <em class="arg">s</em> is <em class="arg">NULL</em>.</dd></dl>
<p>Replacement for the standard <a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/strndup.html">strndup()</a> such that <a class="el" href="group__malloc.html#gaf2c7b89c327d1f60f59e68b9ea644d95" title="Free previously allocated memory.">mi_free()</a> can be used on the returned result. </p> <p>Replacement for the standard <a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/strndup.html">strndup()</a> such that <a class="el" href="#gaf2c7b89c327d1f60f59e68b9ea644d95" title="Free previously allocated memory.">mi_free()</a> can be used on the returned result. </p>
</div> </div>
</div> </div>
<a id="gafdd9d8bb2986e668ba9884f28af38000"></a> <a id="gae6e38c4403247a7b40d80419e093bfb8" name="gae6e38c4403247a7b40d80419e093bfb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafdd9d8bb2986e668ba9884f28af38000">&#9670;&nbsp;</a></span>mi_zalloc()</h2> <h2 class="memtitle"><span class="permalink"><a href="#gae6e38c4403247a7b40d80419e093bfb8">&#9670;&#160;</a></span>mi_zalloc()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_zalloc </td> <td class="memname">void * mi_zalloc </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span></td><td>)</td>
<td class="paramname"><em>size</em></td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
@ -622,7 +562,7 @@ mi_zallocn() </dd></dl>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>Pointer to newly allocated zero initialized memory, or <em>NULL</em> if out of memory. </dd></dl> <dl class="section return"><dt>Returns</dt><dd>Pointer to newly allocated zero initialized memory, or <em class="arg">NULL</em> if out of memory. </dd></dl>
</div> </div>
</div> </div>
@ -631,7 +571,7 @@ mi_zallocn() </dd></dl>
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -1,16 +1,16 @@
var group__malloc = var group__malloc =
[ [
[ "mi_calloc", "group__malloc.html#ga97fedb4f7107c592fd7f0f0a8949a57d", null ], [ "mi_calloc", "group__malloc.html#ga6686568014b54d1e6c7ac64a076e4f56", null ],
[ "mi_expand", "group__malloc.html#gaaee66a1d483c3e28f585525fb96707e4", null ], [ "mi_expand", "group__malloc.html#ga19299856216cfbb08e2628593654dfb0", null ],
[ "mi_free", "group__malloc.html#gaf2c7b89c327d1f60f59e68b9ea644d95", null ], [ "mi_free", "group__malloc.html#gaf2c7b89c327d1f60f59e68b9ea644d95", null ],
[ "mi_malloc", "group__malloc.html#ga3406e8b168bc74c8637b11571a6da83a", null ], [ "mi_malloc", "group__malloc.html#gae1dd97b542420c87ae085e822b1229e8", null ],
[ "mi_mallocn", "group__malloc.html#ga0b05e2bf0f73e7401ae08597ff782ac6", null ], [ "mi_mallocn", "group__malloc.html#ga61f46bade3db76ca24aaafedc40de7b6", null ],
[ "mi_realloc", "group__malloc.html#gaf11eb497da57bdfb2de65eb191c69db6", null ], [ "mi_realloc", "group__malloc.html#ga0621af6a5e3aa384e6a1b548958bf583", null ],
[ "mi_reallocf", "group__malloc.html#gafe68ac7c5e24a65cd55c9d6b152211a0", null ], [ "mi_reallocf", "group__malloc.html#ga4dc3a4067037b151a64629fe8a332641", null ],
[ "mi_reallocn", "group__malloc.html#ga61d57b4144ba24fba5c1e9b956d13853", null ], [ "mi_reallocn", "group__malloc.html#ga8bddfb4a1270a0854bbcf44cb3980467", null ],
[ "mi_realpath", "group__malloc.html#ga08cec32dd5bbe7da91c78d19f1b5bebe", null ], [ "mi_realpath", "group__malloc.html#ga94c3afcc086e85d75a57e9f76b9b71dd", null ],
[ "mi_recalloc", "group__malloc.html#ga23a0fbb452b5dce8e31fab1a1958cacc", null ], [ "mi_recalloc", "group__malloc.html#ga23a0fbb452b5dce8e31fab1a1958cacc", null ],
[ "mi_strdup", "group__malloc.html#gac7cffe13f1f458ed16789488bf92b9b2", null ], [ "mi_strdup", "group__malloc.html#ga245ac90ebc2cfdd17de599e5fea59889", null ],
[ "mi_strndup", "group__malloc.html#gaaabf971c2571891433477e2d21a35266", null ], [ "mi_strndup", "group__malloc.html#ga486d0d26b3b3794f6d1cdb41a9aed92d", null ],
[ "mi_zalloc", "group__malloc.html#gafdd9d8bb2986e668ba9884f28af38000", null ] [ "mi_zalloc", "group__malloc.html#gae6e38c4403247a7b40d80419e093bfb8", null ]
]; ];

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Runtime Options</title> <title>mi-malloc: Runtime Options</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('group__options.html',''); initResizable(); }); $(function(){initNavTree('group__options.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,128 +91,177 @@ $(document).ready(function(){initNavTree('group__options.html',''); initResizabl
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#enum-members">Enumerations</a> &#124; <a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div> <a href="#func-members">Functions</a> </div>
<div class="headertitle"> <div class="headertitle"><div class="title">Runtime Options</div></div>
<div class="title">Runtime Options</div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<p>Set runtime behavior. <p>Set runtime behavior.
<a href="#details">More...</a></p> <a href="#details">More...</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
Enumerations</h2></td></tr> Enumerations</h2></td></tr>
<tr class="memitem:gafebf7ed116adb38ae5218bc3ce06884c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> { <br /> <tr class="memitem:gafebf7ed116adb38ae5218bc3ce06884c" id="r_gafebf7ed116adb38ae5218bc3ce06884c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> { <br />
&#160;&#160;<a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4822e5c00732c5984b32a032837f0">mi_option_show_errors</a> &#160;&#160;<a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884cafbf4822e5c00732c5984b32a032837f0">mi_option_show_errors</a>
, <a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0957ef73b2550764b4840edf48422fda">mi_option_show_stats</a> , <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca0957ef73b2550764b4840edf48422fda">mi_option_show_stats</a>
, <a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7c8b7bf5281c581bad64f5daa6442777">mi_option_verbose</a> , <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca7c8b7bf5281c581bad64f5daa6442777">mi_option_verbose</a>
, <a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca1e8de72c93da7ff22d91e1e27b52ac2b">mi_option_eager_commit</a> , <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884caec6ecbe29d46a48205ed8823a8a52a6a">mi_option_max_errors</a>
, <br /> , <br />
&#160;&#160;<a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca32ce97ece29f69e82579679cf8a307ad">mi_option_eager_region_commit</a> &#160;&#160;<a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884caf9595921087e942602ee079158762665">mi_option_max_warnings</a>
, <a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4192d491200d0055df0554d4cf65054e">mi_option_large_os_pages</a> , <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884caca7ed041be3b0b9d0b82432c7bf41af2">mi_option_reserve_huge_os_pages</a>
, <a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caca7ed041be3b0b9d0b82432c7bf41af2">mi_option_reserve_huge_os_pages</a> , <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884caa13e7926d4339d2aa6fbf61d4473fd5c">mi_option_reserve_huge_os_pages_at</a>
, <a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa13e7926d4339d2aa6fbf61d4473fd5c">mi_option_reserve_huge_os_pages_at</a> , <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884cafbf4999c828cf79a0fb2de65d23f7333">mi_option_reserve_os_memory</a>
, <br /> , <br />
&#160;&#160;<a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca2ecbe7ef32f5c84de3739aa4f0b805a1">mi_option_segment_cache</a> &#160;&#160;<a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca7cc4804ced69004fa42a9a136a9ba556">mi_option_allow_large_os_pages</a>
, <a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cada854dd272c66342f18a93ee254a2968">mi_option_page_reset</a> , <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca9d15c5e3d2115eef681c17e4dd5ab9a4">mi_option_purge_decommits</a>
, <a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafb121d30d87591850d5410ccc3a95c6d">mi_option_segment_reset</a> , <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884cab1c88e23ae290bbeec824038a97959de">mi_option_arena_reserve</a>
, <a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca154fe170131d5212cff57e22b99523c5">mi_option_reset_delay</a> , <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca4b74ae2a69e445de6c2361b73c1d14bf">mi_option_os_tag</a>
, <br /> , <br />
&#160;&#160;<a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0ac33a18f6b659fcfaf44efb0bab1b74">mi_option_use_numa_nodes</a> &#160;&#160;<a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca8f51df355bf6651db899e6085b54865e">mi_option_retry_on_oom</a>
, <a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cac81ee965b130fa81238913a3c239d536">mi_option_reset_decommits</a> , <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca1e8de72c93da7ff22d91e1e27b52ac2b">mi_option_eager_commit</a>
, <a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca17a190c25be381142d87e0468c4c068c">mi_option_eager_commit_delay</a> , <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca17a190c25be381142d87e0468c4c068c">mi_option_eager_commit_delay</a>
, <a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4b74ae2a69e445de6c2361b73c1d14bf">mi_option_os_tag</a> , <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884cafd0c5ddbc4b59fd8b5216871728167a5">mi_option_arena_eager_commit</a>
, <br /> , <br />
&#160;&#160;<a class="el" href="group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca5b4357b74be0d87568036c32eb1a2e4a">_mi_option_last</a> &#160;&#160;<a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca11e62ed69200a489a5be955582078c0c">mi_option_abandoned_page_purge</a>
, <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884cadd351e615acd8563529c20a347be7290">mi_option_purge_delay</a>
, <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca0ac33a18f6b659fcfaf44efb0bab1b74">mi_option_use_numa_nodes</a>
, <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884cadcfb5a09580361b1be65901d2d812de6">mi_option_disallow_os_alloc</a>
, <br />
&#160;&#160;<a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca9fa61bd9668479f8452d2195759444cc">mi_option_limit_os_alloc</a>
, <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884caa9ad9005d7017c8c30ad2d6ba31db909">mi_option_max_segment_reclaim</a>
, <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca6364331e305e7d3c0218b058ff3afc88">mi_option_destroy_on_exit</a>
, <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca8236501f1ab45d26e6fd885d191a2b5e">mi_option_arena_purge_mult</a>
, <br />
&#160;&#160;<a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca009e4b5684922ce664d73d2a8e1698d9">mi_option_abandoned_reclaim_on_free</a>
, <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca02005f164bdf03f5f00c5be726adf487">mi_option_purge_extend_delay</a>
, <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884caeae1696100e4057ffc4182730cc04e40">mi_option_disallow_arena_alloc</a>
, <a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca38c67733a3956a1f4eeaca89fab9e78e">mi_option_visit_abandoned</a>
, <br />
&#160;&#160;<a class="el" href="#ggafebf7ed116adb38ae5218bc3ce06884ca5b4357b74be0d87568036c32eb1a2e4a">_mi_option_last</a>
<br /> <br />
}</td></tr> }</td></tr>
<tr class="memdesc:gafebf7ed116adb38ae5218bc3ce06884c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Runtime options. <a href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">More...</a><br /></td></tr> <tr class="memdesc:gafebf7ed116adb38ae5218bc3ce06884c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Runtime options. <a href="#gafebf7ed116adb38ae5218bc3ce06884c">More...</a><br /></td></tr>
<tr class="separator:gafebf7ed116adb38ae5218bc3ce06884c"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gafebf7ed116adb38ae5218bc3ce06884c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls"> </table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr> Functions</h2></td></tr>
<tr class="memitem:ga459ad98f18b3fc9275474807fe0ca188"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__options.html#ga459ad98f18b3fc9275474807fe0ca188">mi_option_is_enabled</a> (<a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option)</td></tr> <tr class="memitem:ga459ad98f18b3fc9275474807fe0ca188" id="r_ga459ad98f18b3fc9275474807fe0ca188"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga459ad98f18b3fc9275474807fe0ca188">mi_option_is_enabled</a> (<a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option)</td></tr>
<tr class="separator:ga459ad98f18b3fc9275474807fe0ca188"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga459ad98f18b3fc9275474807fe0ca188"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga04180ae41b0d601421dd62ced40ca050"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__options.html#ga04180ae41b0d601421dd62ced40ca050">mi_option_enable</a> (<a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option)</td></tr> <tr class="memitem:ga04180ae41b0d601421dd62ced40ca050" id="r_ga04180ae41b0d601421dd62ced40ca050"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga04180ae41b0d601421dd62ced40ca050">mi_option_enable</a> (<a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option)</td></tr>
<tr class="separator:ga04180ae41b0d601421dd62ced40ca050"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga04180ae41b0d601421dd62ced40ca050"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaebf6ff707a2e688ebb1a2296ca564054"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__options.html#gaebf6ff707a2e688ebb1a2296ca564054">mi_option_disable</a> (<a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option)</td></tr> <tr class="memitem:gaebf6ff707a2e688ebb1a2296ca564054" id="r_gaebf6ff707a2e688ebb1a2296ca564054"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaebf6ff707a2e688ebb1a2296ca564054">mi_option_disable</a> (<a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option)</td></tr>
<tr class="separator:gaebf6ff707a2e688ebb1a2296ca564054"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gaebf6ff707a2e688ebb1a2296ca564054"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9a13d05fcb77489cb06d4d017ebd8bed"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__options.html#ga9a13d05fcb77489cb06d4d017ebd8bed">mi_option_set_enabled</a> (<a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option, bool enable)</td></tr> <tr class="memitem:ga9a13d05fcb77489cb06d4d017ebd8bed" id="r_ga9a13d05fcb77489cb06d4d017ebd8bed"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga9a13d05fcb77489cb06d4d017ebd8bed">mi_option_set_enabled</a> (<a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option, bool enable)</td></tr>
<tr class="separator:ga9a13d05fcb77489cb06d4d017ebd8bed"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga9a13d05fcb77489cb06d4d017ebd8bed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga65518b69ec5d32336b50e07f74b3f629"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__options.html#ga65518b69ec5d32336b50e07f74b3f629">mi_option_set_enabled_default</a> (<a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option, bool enable)</td></tr> <tr class="memitem:ga65518b69ec5d32336b50e07f74b3f629" id="r_ga65518b69ec5d32336b50e07f74b3f629"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga65518b69ec5d32336b50e07f74b3f629">mi_option_set_enabled_default</a> (<a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option, bool enable)</td></tr>
<tr class="separator:ga65518b69ec5d32336b50e07f74b3f629"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga65518b69ec5d32336b50e07f74b3f629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7e8af195cc81d3fa64ccf2662caa565a"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__options.html#ga7e8af195cc81d3fa64ccf2662caa565a">mi_option_get</a> (<a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option)</td></tr> <tr class="memitem:ga7e8af195cc81d3fa64ccf2662caa565a" id="r_ga7e8af195cc81d3fa64ccf2662caa565a"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga7e8af195cc81d3fa64ccf2662caa565a">mi_option_get</a> (<a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option)</td></tr>
<tr class="separator:ga7e8af195cc81d3fa64ccf2662caa565a"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga7e8af195cc81d3fa64ccf2662caa565a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf84921c32375e25754dc2ee6a911fa60"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__options.html#gaf84921c32375e25754dc2ee6a911fa60">mi_option_set</a> (<a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option, long value)</td></tr> <tr class="memitem:ga96ad9c406338bd314cfe878cfc9bf723" id="r_ga96ad9c406338bd314cfe878cfc9bf723"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga96ad9c406338bd314cfe878cfc9bf723">mi_option_get_clamp</a> (<a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option, long min, long max)</td></tr>
<tr class="separator:ga96ad9c406338bd314cfe878cfc9bf723"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga274db5a6ac87cc24ef0b23e7006ed02c" id="r_ga274db5a6ac87cc24ef0b23e7006ed02c"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga274db5a6ac87cc24ef0b23e7006ed02c">mi_option_get_size</a> (<a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option)</td></tr>
<tr class="separator:ga274db5a6ac87cc24ef0b23e7006ed02c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf84921c32375e25754dc2ee6a911fa60" id="r_gaf84921c32375e25754dc2ee6a911fa60"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaf84921c32375e25754dc2ee6a911fa60">mi_option_set</a> (<a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option, long value)</td></tr>
<tr class="separator:gaf84921c32375e25754dc2ee6a911fa60"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gaf84921c32375e25754dc2ee6a911fa60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7ef623e440e6e5545cb08c94e71e4b90"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__options.html#ga7ef623e440e6e5545cb08c94e71e4b90">mi_option_set_default</a> (<a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option, long value)</td></tr> <tr class="memitem:ga7ef623e440e6e5545cb08c94e71e4b90" id="r_ga7ef623e440e6e5545cb08c94e71e4b90"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga7ef623e440e6e5545cb08c94e71e4b90">mi_option_set_default</a> (<a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a> option, long value)</td></tr>
<tr class="separator:ga7ef623e440e6e5545cb08c94e71e4b90"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga7ef623e440e6e5545cb08c94e71e4b90"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table> </table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Set runtime behavior. </p> <p>Set runtime behavior. </p>
<h2 class="groupheader">Enumeration Type Documentation</h2> <h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="gafebf7ed116adb38ae5218bc3ce06884c"></a> <a id="gafebf7ed116adb38ae5218bc3ce06884c" name="gafebf7ed116adb38ae5218bc3ce06884c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafebf7ed116adb38ae5218bc3ce06884c">&#9670;&nbsp;</a></span>mi_option_t</h2> <h2 class="memtitle"><span class="permalink"><a href="#gafebf7ed116adb38ae5218bc3ce06884c">&#9670;&#160;</a></span>mi_option_t</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">enum <a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a></td> <td class="memname">enum <a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Runtime options. </p> <p>Runtime options. </p>
<table class="fieldtable"> <table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884cafbf4822e5c00732c5984b32a032837f0"></a>mi_option_show_errors&#160;</td><td class="fielddoc"><p>Print error messages to <code>stderr</code>. </p> <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884cafbf4822e5c00732c5984b32a032837f0" name="ggafebf7ed116adb38ae5218bc3ce06884cafbf4822e5c00732c5984b32a032837f0"></a>mi_option_show_errors&#160;</td><td class="fielddoc"><p>Print error messages. </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca0957ef73b2550764b4840edf48422fda"></a>mi_option_show_stats&#160;</td><td class="fielddoc"><p>Print statistics to <code>stderr</code> when the program is done. </p> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca0957ef73b2550764b4840edf48422fda" name="ggafebf7ed116adb38ae5218bc3ce06884ca0957ef73b2550764b4840edf48422fda"></a>mi_option_show_stats&#160;</td><td class="fielddoc"><p>Print statistics on termination. </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca7c8b7bf5281c581bad64f5daa6442777"></a>mi_option_verbose&#160;</td><td class="fielddoc"><p>Print verbose messages to <code>stderr</code>. </p> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca7c8b7bf5281c581bad64f5daa6442777" name="ggafebf7ed116adb38ae5218bc3ce06884ca7c8b7bf5281c581bad64f5daa6442777"></a>mi_option_verbose&#160;</td><td class="fielddoc"><p>Print verbose messages. </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca1e8de72c93da7ff22d91e1e27b52ac2b"></a>mi_option_eager_commit&#160;</td><td class="fielddoc"><p>Eagerly commit segments (4MiB) (enabled by default). </p> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884caec6ecbe29d46a48205ed8823a8a52a6a" name="ggafebf7ed116adb38ae5218bc3ce06884caec6ecbe29d46a48205ed8823a8a52a6a"></a>mi_option_max_errors&#160;</td><td class="fielddoc"><p>issue at most N error messages </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca32ce97ece29f69e82579679cf8a307ad"></a>mi_option_eager_region_commit&#160;</td><td class="fielddoc"><p>Eagerly commit large (256MiB) memory regions (enabled by default, except on Windows) </p> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884caf9595921087e942602ee079158762665" name="ggafebf7ed116adb38ae5218bc3ce06884caf9595921087e942602ee079158762665"></a>mi_option_max_warnings&#160;</td><td class="fielddoc"><p>issue at most N warning messages </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca4192d491200d0055df0554d4cf65054e"></a>mi_option_large_os_pages&#160;</td><td class="fielddoc"><p>Use large OS pages (2MiB in size) if possible. </p> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884caca7ed041be3b0b9d0b82432c7bf41af2" name="ggafebf7ed116adb38ae5218bc3ce06884caca7ed041be3b0b9d0b82432c7bf41af2"></a>mi_option_reserve_huge_os_pages&#160;</td><td class="fielddoc"><p>reserve N huge OS pages (1GiB pages) at startup </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884caca7ed041be3b0b9d0b82432c7bf41af2"></a>mi_option_reserve_huge_os_pages&#160;</td><td class="fielddoc"><p>The number of huge OS pages (1GiB in size) to reserve at the start of the program. </p> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884caa13e7926d4339d2aa6fbf61d4473fd5c" name="ggafebf7ed116adb38ae5218bc3ce06884caa13e7926d4339d2aa6fbf61d4473fd5c"></a>mi_option_reserve_huge_os_pages_at&#160;</td><td class="fielddoc"><p>Reserve N huge OS pages at a specific NUMA node N. </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884caa13e7926d4339d2aa6fbf61d4473fd5c"></a>mi_option_reserve_huge_os_pages_at&#160;</td><td class="fielddoc"><p>Reserve huge OS pages at node N. </p> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884cafbf4999c828cf79a0fb2de65d23f7333" name="ggafebf7ed116adb38ae5218bc3ce06884cafbf4999c828cf79a0fb2de65d23f7333"></a>mi_option_reserve_os_memory&#160;</td><td class="fielddoc"><p>reserve specified amount of OS memory in an arena at startup (internally, this value is in KiB; use <code>mi_option_get_size</code>) </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca2ecbe7ef32f5c84de3739aa4f0b805a1"></a>mi_option_segment_cache&#160;</td><td class="fielddoc"><p>The number of segments per thread to keep cached. </p> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca7cc4804ced69004fa42a9a136a9ba556" name="ggafebf7ed116adb38ae5218bc3ce06884ca7cc4804ced69004fa42a9a136a9ba556"></a>mi_option_allow_large_os_pages&#160;</td><td class="fielddoc"><p>allow large (2 or 4 MiB) OS pages, implies eager commit. If false, also disables THP for the process. </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884cada854dd272c66342f18a93ee254a2968"></a>mi_option_page_reset&#160;</td><td class="fielddoc"><p>Reset page memory after <em>mi_option_reset_delay</em> milliseconds when it becomes free. </p> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca9d15c5e3d2115eef681c17e4dd5ab9a4" name="ggafebf7ed116adb38ae5218bc3ce06884ca9d15c5e3d2115eef681c17e4dd5ab9a4"></a>mi_option_purge_decommits&#160;</td><td class="fielddoc"><p>should a memory purge decommit? (=1). Set to 0 to use memory reset on a purge (instead of decommit) </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884cafb121d30d87591850d5410ccc3a95c6d"></a>mi_option_segment_reset&#160;</td><td class="fielddoc"><p>Experimental. </p> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884cab1c88e23ae290bbeec824038a97959de" name="ggafebf7ed116adb38ae5218bc3ce06884cab1c88e23ae290bbeec824038a97959de"></a>mi_option_arena_reserve&#160;</td><td class="fielddoc"><p>initial memory size for arena reservation (= 1 GiB on 64-bit) (internally, this value is in KiB; use <code>mi_option_get_size</code>) </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca154fe170131d5212cff57e22b99523c5"></a>mi_option_reset_delay&#160;</td><td class="fielddoc"><p>Delay in milli-seconds before resetting a page (100ms by default) </p> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca4b74ae2a69e445de6c2361b73c1d14bf" name="ggafebf7ed116adb38ae5218bc3ce06884ca4b74ae2a69e445de6c2361b73c1d14bf"></a>mi_option_os_tag&#160;</td><td class="fielddoc"><p>tag used for OS logging (macOS only for now) (=100) </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca0ac33a18f6b659fcfaf44efb0bab1b74"></a>mi_option_use_numa_nodes&#160;</td><td class="fielddoc"><p>Pretend there are at most N NUMA nodes. </p> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca8f51df355bf6651db899e6085b54865e" name="ggafebf7ed116adb38ae5218bc3ce06884ca8f51df355bf6651db899e6085b54865e"></a>mi_option_retry_on_oom&#160;</td><td class="fielddoc"><p>retry on out-of-memory for N milli seconds (=400), set to 0 to disable retries. (only on windows) </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884cac81ee965b130fa81238913a3c239d536"></a>mi_option_reset_decommits&#160;</td><td class="fielddoc"><p>Experimental. </p> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca1e8de72c93da7ff22d91e1e27b52ac2b" name="ggafebf7ed116adb38ae5218bc3ce06884ca1e8de72c93da7ff22d91e1e27b52ac2b"></a>mi_option_eager_commit&#160;</td><td class="fielddoc"><p>eager commit segments? (after <code>eager_commit_delay</code> segments) (enabled by default). </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca17a190c25be381142d87e0468c4c068c"></a>mi_option_eager_commit_delay&#160;</td><td class="fielddoc"><p>Experimental. </p> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca17a190c25be381142d87e0468c4c068c" name="ggafebf7ed116adb38ae5218bc3ce06884ca17a190c25be381142d87e0468c4c068c"></a>mi_option_eager_commit_delay&#160;</td><td class="fielddoc"><p>the first N segments per thread are not eagerly committed (but per page in the segment on demand) </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca4b74ae2a69e445de6c2361b73c1d14bf"></a>mi_option_os_tag&#160;</td><td class="fielddoc"><p>OS tag to assign to mimalloc'd memory. </p> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884cafd0c5ddbc4b59fd8b5216871728167a5" name="ggafebf7ed116adb38ae5218bc3ce06884cafd0c5ddbc4b59fd8b5216871728167a5"></a>mi_option_arena_eager_commit&#160;</td><td class="fielddoc"><p>eager commit arenas? Use 2 to enable just on overcommit systems (=2) </p>
</td></tr> </td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca5b4357b74be0d87568036c32eb1a2e4a"></a>_mi_option_last&#160;</td><td class="fielddoc"></td></tr> <tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca11e62ed69200a489a5be955582078c0c" name="ggafebf7ed116adb38ae5218bc3ce06884ca11e62ed69200a489a5be955582078c0c"></a>mi_option_abandoned_page_purge&#160;</td><td class="fielddoc"><p>immediately purge delayed purges on thread termination </p>
</td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884cadd351e615acd8563529c20a347be7290" name="ggafebf7ed116adb38ae5218bc3ce06884cadd351e615acd8563529c20a347be7290"></a>mi_option_purge_delay&#160;</td><td class="fielddoc"><p>memory purging is delayed by N milli seconds; use 0 for immediate purging or -1 for no purging at all. (=10) </p>
</td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca0ac33a18f6b659fcfaf44efb0bab1b74" name="ggafebf7ed116adb38ae5218bc3ce06884ca0ac33a18f6b659fcfaf44efb0bab1b74"></a>mi_option_use_numa_nodes&#160;</td><td class="fielddoc"><p>0 = use all available numa nodes, otherwise use at most N nodes. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884cadcfb5a09580361b1be65901d2d812de6" name="ggafebf7ed116adb38ae5218bc3ce06884cadcfb5a09580361b1be65901d2d812de6"></a>mi_option_disallow_os_alloc&#160;</td><td class="fielddoc"><p>1 = do not use OS memory for allocation (but only programmatically reserved arenas) </p>
</td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca9fa61bd9668479f8452d2195759444cc" name="ggafebf7ed116adb38ae5218bc3ce06884ca9fa61bd9668479f8452d2195759444cc"></a>mi_option_limit_os_alloc&#160;</td><td class="fielddoc"><p>If set to 1, do not use OS memory for allocation (but only pre-reserved arenas) </p>
</td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884caa9ad9005d7017c8c30ad2d6ba31db909" name="ggafebf7ed116adb38ae5218bc3ce06884caa9ad9005d7017c8c30ad2d6ba31db909"></a>mi_option_max_segment_reclaim&#160;</td><td class="fielddoc"><p>max. percentage of the abandoned segments can be reclaimed per try (=10%) </p>
</td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca6364331e305e7d3c0218b058ff3afc88" name="ggafebf7ed116adb38ae5218bc3ce06884ca6364331e305e7d3c0218b058ff3afc88"></a>mi_option_destroy_on_exit&#160;</td><td class="fielddoc"><p>if set, release all memory on exit; sometimes used for dynamic unloading but can be unsafe </p>
</td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca8236501f1ab45d26e6fd885d191a2b5e" name="ggafebf7ed116adb38ae5218bc3ce06884ca8236501f1ab45d26e6fd885d191a2b5e"></a>mi_option_arena_purge_mult&#160;</td><td class="fielddoc"><p>multiplier for <code>purge_delay</code> for the purging delay for arenas (=10) </p>
</td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca009e4b5684922ce664d73d2a8e1698d9" name="ggafebf7ed116adb38ae5218bc3ce06884ca009e4b5684922ce664d73d2a8e1698d9"></a>mi_option_abandoned_reclaim_on_free&#160;</td><td class="fielddoc"><p>allow to reclaim an abandoned segment on a free (=1) </p>
</td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca02005f164bdf03f5f00c5be726adf487" name="ggafebf7ed116adb38ae5218bc3ce06884ca02005f164bdf03f5f00c5be726adf487"></a>mi_option_purge_extend_delay&#160;</td><td class="fielddoc"><p>extend purge delay on each subsequent delay (=1) </p>
</td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884caeae1696100e4057ffc4182730cc04e40" name="ggafebf7ed116adb38ae5218bc3ce06884caeae1696100e4057ffc4182730cc04e40"></a>mi_option_disallow_arena_alloc&#160;</td><td class="fielddoc"><p>1 = do not use arena's for allocation (except if using specific arena id's) </p>
</td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca38c67733a3956a1f4eeaca89fab9e78e" name="ggafebf7ed116adb38ae5218bc3ce06884ca38c67733a3956a1f4eeaca89fab9e78e"></a>mi_option_visit_abandoned&#160;</td><td class="fielddoc"><p>allow visiting heap blocks from abandoned threads (=0) </p>
</td></tr>
<tr><td class="fieldname"><a id="ggafebf7ed116adb38ae5218bc3ce06884ca5b4357b74be0d87568036c32eb1a2e4a" name="ggafebf7ed116adb38ae5218bc3ce06884ca5b4357b74be0d87568036c32eb1a2e4a"></a>_mi_option_last&#160;</td><td class="fielddoc"></td></tr>
</table> </table>
</div> </div>
</div> </div>
<h2 class="groupheader">Function Documentation</h2> <h2 class="groupheader">Function Documentation</h2>
<a id="gaebf6ff707a2e688ebb1a2296ca564054"></a> <a id="gaebf6ff707a2e688ebb1a2296ca564054" name="gaebf6ff707a2e688ebb1a2296ca564054"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaebf6ff707a2e688ebb1a2296ca564054">&#9670;&nbsp;</a></span>mi_option_disable()</h2> <h2 class="memtitle"><span class="permalink"><a href="#gaebf6ff707a2e688ebb1a2296ca564054">&#9670;&#160;</a></span>mi_option_disable()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -217,8 +269,7 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">void mi_option_disable </td> <td class="memname">void mi_option_disable </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a>&#160;</td> <td class="paramtype"><a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a></td> <td class="paramname"><span class="paramname"><em>option</em></span></td><td>)</td>
<td class="paramname"><em>option</em></td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
@ -226,8 +277,8 @@ Functions</h2></td></tr>
</div> </div>
</div> </div>
<a id="ga04180ae41b0d601421dd62ced40ca050"></a> <a id="ga04180ae41b0d601421dd62ced40ca050" name="ga04180ae41b0d601421dd62ced40ca050"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga04180ae41b0d601421dd62ced40ca050">&#9670;&nbsp;</a></span>mi_option_enable()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga04180ae41b0d601421dd62ced40ca050">&#9670;&#160;</a></span>mi_option_enable()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -235,8 +286,7 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">void mi_option_enable </td> <td class="memname">void mi_option_enable </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a>&#160;</td> <td class="paramtype"><a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a></td> <td class="paramname"><span class="paramname"><em>option</em></span></td><td>)</td>
<td class="paramname"><em>option</em></td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
@ -244,8 +294,8 @@ Functions</h2></td></tr>
</div> </div>
</div> </div>
<a id="ga7e8af195cc81d3fa64ccf2662caa565a"></a> <a id="ga7e8af195cc81d3fa64ccf2662caa565a" name="ga7e8af195cc81d3fa64ccf2662caa565a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7e8af195cc81d3fa64ccf2662caa565a">&#9670;&nbsp;</a></span>mi_option_get()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga7e8af195cc81d3fa64ccf2662caa565a">&#9670;&#160;</a></span>mi_option_get()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -253,8 +303,7 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">long mi_option_get </td> <td class="memname">long mi_option_get </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a>&#160;</td> <td class="paramtype"><a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a></td> <td class="paramname"><span class="paramname"><em>option</em></span></td><td>)</td>
<td class="paramname"><em>option</em></td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
@ -262,8 +311,51 @@ Functions</h2></td></tr>
</div> </div>
</div> </div>
<a id="ga459ad98f18b3fc9275474807fe0ca188"></a> <a id="ga96ad9c406338bd314cfe878cfc9bf723" name="ga96ad9c406338bd314cfe878cfc9bf723"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga459ad98f18b3fc9275474807fe0ca188">&#9670;&nbsp;</a></span>mi_option_is_enabled()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga96ad9c406338bd314cfe878cfc9bf723">&#9670;&#160;</a></span>mi_option_get_clamp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">long mi_option_get_clamp </td>
<td>(</td>
<td class="paramtype"><a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a></td> <td class="paramname"><span class="paramname"><em>option</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long</td> <td class="paramname"><span class="paramname"><em>min</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long</td> <td class="paramname"><span class="paramname"><em>max</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ga274db5a6ac87cc24ef0b23e7006ed02c" name="ga274db5a6ac87cc24ef0b23e7006ed02c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga274db5a6ac87cc24ef0b23e7006ed02c">&#9670;&#160;</a></span>mi_option_get_size()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t mi_option_get_size </td>
<td>(</td>
<td class="paramtype"><a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a></td> <td class="paramname"><span class="paramname"><em>option</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ga459ad98f18b3fc9275474807fe0ca188" name="ga459ad98f18b3fc9275474807fe0ca188"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga459ad98f18b3fc9275474807fe0ca188">&#9670;&#160;</a></span>mi_option_is_enabled()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -271,8 +363,7 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">bool mi_option_is_enabled </td> <td class="memname">bool mi_option_is_enabled </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a>&#160;</td> <td class="paramtype"><a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a></td> <td class="paramname"><span class="paramname"><em>option</em></span></td><td>)</td>
<td class="paramname"><em>option</em></td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
@ -280,8 +371,8 @@ Functions</h2></td></tr>
</div> </div>
</div> </div>
<a id="gaf84921c32375e25754dc2ee6a911fa60"></a> <a id="gaf84921c32375e25754dc2ee6a911fa60" name="gaf84921c32375e25754dc2ee6a911fa60"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf84921c32375e25754dc2ee6a911fa60">&#9670;&nbsp;</a></span>mi_option_set()</h2> <h2 class="memtitle"><span class="permalink"><a href="#gaf84921c32375e25754dc2ee6a911fa60">&#9670;&#160;</a></span>mi_option_set()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -289,27 +380,20 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">void mi_option_set </td> <td class="memname">void mi_option_set </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a>&#160;</td> <td class="paramtype"><a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a></td> <td class="paramname"><span class="paramname"><em>option</em></span>, </td>
<td class="paramname"><em>option</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">long&#160;</td> <td class="paramtype">long</td> <td class="paramname"><span class="paramname"><em>value</em></span>&#160;)</td>
<td class="paramname"><em>value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga7ef623e440e6e5545cb08c94e71e4b90"></a> <a id="ga7ef623e440e6e5545cb08c94e71e4b90" name="ga7ef623e440e6e5545cb08c94e71e4b90"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7ef623e440e6e5545cb08c94e71e4b90">&#9670;&nbsp;</a></span>mi_option_set_default()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga7ef623e440e6e5545cb08c94e71e4b90">&#9670;&#160;</a></span>mi_option_set_default()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -317,27 +401,20 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">void mi_option_set_default </td> <td class="memname">void mi_option_set_default </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a>&#160;</td> <td class="paramtype"><a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a></td> <td class="paramname"><span class="paramname"><em>option</em></span>, </td>
<td class="paramname"><em>option</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">long&#160;</td> <td class="paramtype">long</td> <td class="paramname"><span class="paramname"><em>value</em></span>&#160;)</td>
<td class="paramname"><em>value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga9a13d05fcb77489cb06d4d017ebd8bed"></a> <a id="ga9a13d05fcb77489cb06d4d017ebd8bed" name="ga9a13d05fcb77489cb06d4d017ebd8bed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9a13d05fcb77489cb06d4d017ebd8bed">&#9670;&nbsp;</a></span>mi_option_set_enabled()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga9a13d05fcb77489cb06d4d017ebd8bed">&#9670;&#160;</a></span>mi_option_set_enabled()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -345,27 +422,20 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">void mi_option_set_enabled </td> <td class="memname">void mi_option_set_enabled </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a>&#160;</td> <td class="paramtype"><a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a></td> <td class="paramname"><span class="paramname"><em>option</em></span>, </td>
<td class="paramname"><em>option</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">bool&#160;</td> <td class="paramtype">bool</td> <td class="paramname"><span class="paramname"><em>enable</em></span>&#160;)</td>
<td class="paramname"><em>enable</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga65518b69ec5d32336b50e07f74b3f629"></a> <a id="ga65518b69ec5d32336b50e07f74b3f629" name="ga65518b69ec5d32336b50e07f74b3f629"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga65518b69ec5d32336b50e07f74b3f629">&#9670;&nbsp;</a></span>mi_option_set_enabled_default()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga65518b69ec5d32336b50e07f74b3f629">&#9670;&#160;</a></span>mi_option_set_enabled_default()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -373,19 +443,12 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">void mi_option_set_enabled_default </td> <td class="memname">void mi_option_set_enabled_default </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__options.html#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a>&#160;</td> <td class="paramtype"><a class="el" href="#gafebf7ed116adb38ae5218bc3ce06884c">mi_option_t</a></td> <td class="paramname"><span class="paramname"><em>option</em></span>, </td>
<td class="paramname"><em>option</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">bool&#160;</td> <td class="paramtype">bool</td> <td class="paramname"><span class="paramname"><em>enable</em></span>&#160;)</td>
<td class="paramname"><em>enable</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
@ -397,7 +460,7 @@ Functions</h2></td></tr>
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -4,24 +4,38 @@ var group__options =
[ "mi_option_show_errors", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4822e5c00732c5984b32a032837f0", null ], [ "mi_option_show_errors", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4822e5c00732c5984b32a032837f0", null ],
[ "mi_option_show_stats", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0957ef73b2550764b4840edf48422fda", null ], [ "mi_option_show_stats", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0957ef73b2550764b4840edf48422fda", null ],
[ "mi_option_verbose", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7c8b7bf5281c581bad64f5daa6442777", null ], [ "mi_option_verbose", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7c8b7bf5281c581bad64f5daa6442777", null ],
[ "mi_option_eager_commit", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca1e8de72c93da7ff22d91e1e27b52ac2b", null ], [ "mi_option_max_errors", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caec6ecbe29d46a48205ed8823a8a52a6a", null ],
[ "mi_option_eager_region_commit", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca32ce97ece29f69e82579679cf8a307ad", null ], [ "mi_option_max_warnings", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caf9595921087e942602ee079158762665", null ],
[ "mi_option_large_os_pages", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4192d491200d0055df0554d4cf65054e", null ],
[ "mi_option_reserve_huge_os_pages", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caca7ed041be3b0b9d0b82432c7bf41af2", null ], [ "mi_option_reserve_huge_os_pages", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caca7ed041be3b0b9d0b82432c7bf41af2", null ],
[ "mi_option_reserve_huge_os_pages_at", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa13e7926d4339d2aa6fbf61d4473fd5c", null ], [ "mi_option_reserve_huge_os_pages_at", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa13e7926d4339d2aa6fbf61d4473fd5c", null ],
[ "mi_option_segment_cache", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca2ecbe7ef32f5c84de3739aa4f0b805a1", null ], [ "mi_option_reserve_os_memory", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4999c828cf79a0fb2de65d23f7333", null ],
[ "mi_option_page_reset", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cada854dd272c66342f18a93ee254a2968", null ], [ "mi_option_allow_large_os_pages", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7cc4804ced69004fa42a9a136a9ba556", null ],
[ "mi_option_segment_reset", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafb121d30d87591850d5410ccc3a95c6d", null ], [ "mi_option_purge_decommits", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca9d15c5e3d2115eef681c17e4dd5ab9a4", null ],
[ "mi_option_reset_delay", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca154fe170131d5212cff57e22b99523c5", null ], [ "mi_option_arena_reserve", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cab1c88e23ae290bbeec824038a97959de", null ],
[ "mi_option_use_numa_nodes", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0ac33a18f6b659fcfaf44efb0bab1b74", null ],
[ "mi_option_reset_decommits", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cac81ee965b130fa81238913a3c239d536", null ],
[ "mi_option_eager_commit_delay", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca17a190c25be381142d87e0468c4c068c", null ],
[ "mi_option_os_tag", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4b74ae2a69e445de6c2361b73c1d14bf", null ], [ "mi_option_os_tag", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4b74ae2a69e445de6c2361b73c1d14bf", null ],
[ "mi_option_retry_on_oom", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca8f51df355bf6651db899e6085b54865e", null ],
[ "mi_option_eager_commit", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca1e8de72c93da7ff22d91e1e27b52ac2b", null ],
[ "mi_option_eager_commit_delay", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca17a190c25be381142d87e0468c4c068c", null ],
[ "mi_option_arena_eager_commit", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafd0c5ddbc4b59fd8b5216871728167a5", null ],
[ "mi_option_abandoned_page_purge", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca11e62ed69200a489a5be955582078c0c", null ],
[ "mi_option_purge_delay", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cadd351e615acd8563529c20a347be7290", null ],
[ "mi_option_use_numa_nodes", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0ac33a18f6b659fcfaf44efb0bab1b74", null ],
[ "mi_option_disallow_os_alloc", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cadcfb5a09580361b1be65901d2d812de6", null ],
[ "mi_option_limit_os_alloc", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca9fa61bd9668479f8452d2195759444cc", null ],
[ "mi_option_max_segment_reclaim", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa9ad9005d7017c8c30ad2d6ba31db909", null ],
[ "mi_option_destroy_on_exit", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca6364331e305e7d3c0218b058ff3afc88", null ],
[ "mi_option_arena_purge_mult", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca8236501f1ab45d26e6fd885d191a2b5e", null ],
[ "mi_option_abandoned_reclaim_on_free", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca009e4b5684922ce664d73d2a8e1698d9", null ],
[ "mi_option_purge_extend_delay", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca02005f164bdf03f5f00c5be726adf487", null ],
[ "mi_option_disallow_arena_alloc", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caeae1696100e4057ffc4182730cc04e40", null ],
[ "mi_option_visit_abandoned", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca38c67733a3956a1f4eeaca89fab9e78e", null ],
[ "_mi_option_last", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca5b4357b74be0d87568036c32eb1a2e4a", null ] [ "_mi_option_last", "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca5b4357b74be0d87568036c32eb1a2e4a", null ]
] ], ] ],
[ "mi_option_disable", "group__options.html#gaebf6ff707a2e688ebb1a2296ca564054", null ], [ "mi_option_disable", "group__options.html#gaebf6ff707a2e688ebb1a2296ca564054", null ],
[ "mi_option_enable", "group__options.html#ga04180ae41b0d601421dd62ced40ca050", null ], [ "mi_option_enable", "group__options.html#ga04180ae41b0d601421dd62ced40ca050", null ],
[ "mi_option_get", "group__options.html#ga7e8af195cc81d3fa64ccf2662caa565a", null ], [ "mi_option_get", "group__options.html#ga7e8af195cc81d3fa64ccf2662caa565a", null ],
[ "mi_option_get_clamp", "group__options.html#ga96ad9c406338bd314cfe878cfc9bf723", null ],
[ "mi_option_get_size", "group__options.html#ga274db5a6ac87cc24ef0b23e7006ed02c", null ],
[ "mi_option_is_enabled", "group__options.html#ga459ad98f18b3fc9275474807fe0ca188", null ], [ "mi_option_is_enabled", "group__options.html#ga459ad98f18b3fc9275474807fe0ca188", null ],
[ "mi_option_set", "group__options.html#gaf84921c32375e25754dc2ee6a911fa60", null ], [ "mi_option_set", "group__options.html#gaf84921c32375e25754dc2ee6a911fa60", null ],
[ "mi_option_set_default", "group__options.html#ga7ef623e440e6e5545cb08c94e71e4b90", null ], [ "mi_option_set_default", "group__options.html#ga7ef623e440e6e5545cb08c94e71e4b90", null ],

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Posix</title> <title>mi-malloc: Posix</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('group__posix.html',''); initResizable(); }); $(function(){initNavTree('group__posix.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,62 +91,105 @@ $(document).ready(function(){initNavTree('group__posix.html',''); initResizable(
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#func-members">Functions</a> </div> <a href="#func-members">Functions</a> </div>
<div class="headertitle"> <div class="headertitle"><div class="title">Posix</div></div>
<div class="title">Posix</div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<p><code>mi_</code> prefixed implementations of various Posix, Unix, and C++ allocation functions. <p><code>mi_</code> prefixed implementations of various Posix, Unix, and C++ allocation functions.
<a href="#details">More...</a></p> <a href="#details">More...</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr> Functions</h2></td></tr>
<tr class="memitem:ga4531c9e775bb3ae12db57c1ba8a5d7de"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#ga4531c9e775bb3ae12db57c1ba8a5d7de">mi_malloc_size</a> (const void *p)</td></tr> <tr class="memitem:ga705dc7a64bffacfeeb0141501a5c35d7" id="r_ga705dc7a64bffacfeeb0141501a5c35d7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga705dc7a64bffacfeeb0141501a5c35d7">mi_cfree</a> (void *p)</td></tr>
<tr class="separator:ga4531c9e775bb3ae12db57c1ba8a5d7de"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="memdesc:ga705dc7a64bffacfeeb0141501a5c35d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Just as <code>free</code> but also checks if the pointer <code>p</code> belongs to our heap. <br /></td></tr>
<tr class="memitem:ga06d07cf357bbac5c73ba5d0c0c421e17"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#ga06d07cf357bbac5c73ba5d0c0c421e17">mi_malloc_usable_size</a> (const void *p)</td></tr>
<tr class="separator:ga06d07cf357bbac5c73ba5d0c0c421e17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga705dc7a64bffacfeeb0141501a5c35d7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#ga705dc7a64bffacfeeb0141501a5c35d7">mi_cfree</a> (void *p)</td></tr>
<tr class="memdesc:ga705dc7a64bffacfeeb0141501a5c35d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Just as <code>free</code> but also checks if the pointer <code>p</code> belongs to our heap. <a href="group__posix.html#ga705dc7a64bffacfeeb0141501a5c35d7">More...</a><br /></td></tr>
<tr class="separator:ga705dc7a64bffacfeeb0141501a5c35d7"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga705dc7a64bffacfeeb0141501a5c35d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacff84f226ba9feb2031b8992e5579447"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#gacff84f226ba9feb2031b8992e5579447">mi_posix_memalign</a> (void **p, size_t alignment, size_t size)</td></tr> <tr class="memitem:ga66bcfeb4faedbb42b796bc680821ef84" id="r_ga66bcfeb4faedbb42b796bc680821ef84"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga66bcfeb4faedbb42b796bc680821ef84">mi__expand</a> (void *p, size_t newsize)</td></tr>
<tr class="separator:ga66bcfeb4faedbb42b796bc680821ef84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4531c9e775bb3ae12db57c1ba8a5d7de" id="r_ga4531c9e775bb3ae12db57c1ba8a5d7de"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga4531c9e775bb3ae12db57c1ba8a5d7de">mi_malloc_size</a> (const void *p)</td></tr>
<tr class="separator:ga4531c9e775bb3ae12db57c1ba8a5d7de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9d23ac7885fed7413c11d8e0ffa31071" id="r_ga9d23ac7885fed7413c11d8e0ffa31071"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga9d23ac7885fed7413c11d8e0ffa31071">mi_malloc_good_size</a> (size_t size)</td></tr>
<tr class="separator:ga9d23ac7885fed7413c11d8e0ffa31071"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga06d07cf357bbac5c73ba5d0c0c421e17" id="r_ga06d07cf357bbac5c73ba5d0c0c421e17"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga06d07cf357bbac5c73ba5d0c0c421e17">mi_malloc_usable_size</a> (const void *p)</td></tr>
<tr class="separator:ga06d07cf357bbac5c73ba5d0c0c421e17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacff84f226ba9feb2031b8992e5579447" id="r_gacff84f226ba9feb2031b8992e5579447"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gacff84f226ba9feb2031b8992e5579447">mi_posix_memalign</a> (void **p, size_t alignment, size_t size)</td></tr>
<tr class="separator:gacff84f226ba9feb2031b8992e5579447"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gacff84f226ba9feb2031b8992e5579447"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad5a69c8fea96aa2b7a7c818c2130090a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#gad5a69c8fea96aa2b7a7c818c2130090a">mi__posix_memalign</a> (void **p, size_t alignment, size_t size)</td></tr> <tr class="memitem:gad5a69c8fea96aa2b7a7c818c2130090a" id="r_gad5a69c8fea96aa2b7a7c818c2130090a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gad5a69c8fea96aa2b7a7c818c2130090a">mi__posix_memalign</a> (void **p, size_t alignment, size_t size)</td></tr>
<tr class="separator:gad5a69c8fea96aa2b7a7c818c2130090a"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gad5a69c8fea96aa2b7a7c818c2130090a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaab7fa71ea93b96873f5d9883db57d40e"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#gaab7fa71ea93b96873f5d9883db57d40e">mi_memalign</a> (size_t alignment, size_t size)</td></tr> <tr class="memitem:ga726867f13fd29ca36064954c0285b1d8" id="r_ga726867f13fd29ca36064954c0285b1d8"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga726867f13fd29ca36064954c0285b1d8">mi_memalign</a> (size_t alignment, size_t size)</td></tr>
<tr class="separator:gaab7fa71ea93b96873f5d9883db57d40e"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga726867f13fd29ca36064954c0285b1d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga73baaf5951f5165ba0763d0c06b6a93b"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#ga73baaf5951f5165ba0763d0c06b6a93b">mi_valloc</a> (size_t size)</td></tr> <tr class="memitem:ga50cafb9722020402f065de93799f64ca" id="r_ga50cafb9722020402f065de93799f64ca"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga50cafb9722020402f065de93799f64ca">mi_valloc</a> (size_t size)</td></tr>
<tr class="separator:ga73baaf5951f5165ba0763d0c06b6a93b"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga50cafb9722020402f065de93799f64ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeb325c39b887d3b90d85d1eb1712fb1e"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#gaeb325c39b887d3b90d85d1eb1712fb1e">mi_pvalloc</a> (size_t size)</td></tr> <tr class="memitem:ga644bebccdbb2821542dd8c7e7641f476" id="r_ga644bebccdbb2821542dd8c7e7641f476"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga644bebccdbb2821542dd8c7e7641f476">mi_pvalloc</a> (size_t size)</td></tr>
<tr class="separator:gaeb325c39b887d3b90d85d1eb1712fb1e"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga644bebccdbb2821542dd8c7e7641f476"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1326d2e4388630b5f81ca7206318b8e5"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#ga1326d2e4388630b5f81ca7206318b8e5">mi_aligned_alloc</a> (size_t alignment, size_t size)</td></tr> <tr class="memitem:ga430ed1513f0571ff83be00ec58a98ee0" id="r_ga430ed1513f0571ff83be00ec58a98ee0"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga430ed1513f0571ff83be00ec58a98ee0">mi_aligned_alloc</a> (size_t alignment, size_t size)</td></tr>
<tr class="separator:ga1326d2e4388630b5f81ca7206318b8e5"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga430ed1513f0571ff83be00ec58a98ee0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga48fad8648a2f1dab9c87ea9448a52088"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#ga48fad8648a2f1dab9c87ea9448a52088">mi_reallocarray</a> (void *p, size_t count, size_t size)</td></tr> <tr class="memitem:gaa9fd7f25c9ac3a20e89b33bd6e383fcf" id="r_gaa9fd7f25c9ac3a20e89b33bd6e383fcf"><td class="memItemLeft" align="right" valign="top">unsigned short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaa9fd7f25c9ac3a20e89b33bd6e383fcf">mi_wcsdup</a> (const unsigned short *s)</td></tr>
<tr class="memdesc:ga48fad8648a2f1dab9c87ea9448a52088"><td class="mdescLeft">&#160;</td><td class="mdescRight">Correspond s to <a href="https://www.freebsd.org/cgi/man.cgi?query=reallocarray&amp;sektion=3&amp;manpath=freebsd-release-ports">reallocarray</a> in FreeBSD. <a href="group__posix.html#ga48fad8648a2f1dab9c87ea9448a52088">More...</a><br /></td></tr> <tr class="separator:gaa9fd7f25c9ac3a20e89b33bd6e383fcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="separator:ga48fad8648a2f1dab9c87ea9448a52088"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="memitem:ga7b82a44094fdec4d2084eb4288a979b0" id="r_ga7b82a44094fdec4d2084eb4288a979b0"><td class="memItemLeft" align="right" valign="top">unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga7b82a44094fdec4d2084eb4288a979b0">mi_mbsdup</a> (const unsigned char *s)</td></tr>
<tr class="memitem:ga7e1934d60a3e697950eeb48e042bfad5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#ga7e1934d60a3e697950eeb48e042bfad5">mi_reallocarr</a> (void *p, size_t count, size_t size)</td></tr> <tr class="separator:ga7b82a44094fdec4d2084eb4288a979b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memdesc:ga7e1934d60a3e697950eeb48e042bfad5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Corresponds to <a href="https://man.netbsd.org/reallocarr.3">reallocarr</a> in NetBSD. <a href="group__posix.html#ga7e1934d60a3e697950eeb48e042bfad5">More...</a><br /></td></tr> <tr class="memitem:gab41369c1a1da7504013a7a0b1d4dd958" id="r_gab41369c1a1da7504013a7a0b1d4dd958"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gab41369c1a1da7504013a7a0b1d4dd958">mi_dupenv_s</a> (char **buf, size_t *size, const char *name)</td></tr>
<tr class="separator:gab41369c1a1da7504013a7a0b1d4dd958"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6ac6a6a8f3c96f1af24bb8d0439cbbd1" id="r_ga6ac6a6a8f3c96f1af24bb8d0439cbbd1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga6ac6a6a8f3c96f1af24bb8d0439cbbd1">mi_wdupenv_s</a> (unsigned short **buf, size_t *size, const unsigned short *name)</td></tr>
<tr class="separator:ga6ac6a6a8f3c96f1af24bb8d0439cbbd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadfeccb72748a2f6305474a37d9d57bce" id="r_gadfeccb72748a2f6305474a37d9d57bce"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gadfeccb72748a2f6305474a37d9d57bce">mi_reallocarray</a> (void *p, size_t count, size_t size)</td></tr>
<tr class="memdesc:gadfeccb72748a2f6305474a37d9d57bce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Correspond s to <a href="https://www.freebsd.org/cgi/man.cgi?query=reallocarray&amp;sektion=3&amp;manpath=freebsd-release-ports">reallocarray</a> in FreeBSD. <br /></td></tr>
<tr class="separator:gadfeccb72748a2f6305474a37d9d57bce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7e1934d60a3e697950eeb48e042bfad5" id="r_ga7e1934d60a3e697950eeb48e042bfad5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga7e1934d60a3e697950eeb48e042bfad5">mi_reallocarr</a> (void *p, size_t count, size_t size)</td></tr>
<tr class="memdesc:ga7e1934d60a3e697950eeb48e042bfad5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Corresponds to <a href="https://man.netbsd.org/reallocarr.3">reallocarr</a> in NetBSD. <br /></td></tr>
<tr class="separator:ga7e1934d60a3e697950eeb48e042bfad5"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga7e1934d60a3e697950eeb48e042bfad5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae01389eedab8d67341ff52e2aad80ebb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#gae01389eedab8d67341ff52e2aad80ebb">mi_free_size</a> (void *p, size_t size)</td></tr> <tr class="memitem:gaf82cbb4b4f24acf723348628451798d3" id="r_gaf82cbb4b4f24acf723348628451798d3"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaf82cbb4b4f24acf723348628451798d3">mi_aligned_recalloc</a> (void *p, size_t newcount, size_t size, size_t alignment)</td></tr>
<tr class="separator:gaf82cbb4b4f24acf723348628451798d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga16570deddd559001b44953eedbad0084" id="r_ga16570deddd559001b44953eedbad0084"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga16570deddd559001b44953eedbad0084">mi_aligned_offset_recalloc</a> (void *p, size_t newcount, size_t size, size_t alignment, size_t offset)</td></tr>
<tr class="separator:ga16570deddd559001b44953eedbad0084"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae01389eedab8d67341ff52e2aad80ebb" id="r_gae01389eedab8d67341ff52e2aad80ebb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gae01389eedab8d67341ff52e2aad80ebb">mi_free_size</a> (void *p, size_t size)</td></tr>
<tr class="separator:gae01389eedab8d67341ff52e2aad80ebb"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gae01389eedab8d67341ff52e2aad80ebb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga72e9d7ffb5fe94d69bc722c8506e27bc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#ga72e9d7ffb5fe94d69bc722c8506e27bc">mi_free_size_aligned</a> (void *p, size_t size, size_t alignment)</td></tr> <tr class="memitem:ga72e9d7ffb5fe94d69bc722c8506e27bc" id="r_ga72e9d7ffb5fe94d69bc722c8506e27bc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga72e9d7ffb5fe94d69bc722c8506e27bc">mi_free_size_aligned</a> (void *p, size_t size, size_t alignment)</td></tr>
<tr class="separator:ga72e9d7ffb5fe94d69bc722c8506e27bc"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga72e9d7ffb5fe94d69bc722c8506e27bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0d28d5cf61e6bfbb18c63092939fe5c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__posix.html#ga0d28d5cf61e6bfbb18c63092939fe5c9">mi_free_aligned</a> (void *p, size_t alignment)</td></tr> <tr class="memitem:ga0d28d5cf61e6bfbb18c63092939fe5c9" id="r_ga0d28d5cf61e6bfbb18c63092939fe5c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga0d28d5cf61e6bfbb18c63092939fe5c9">mi_free_aligned</a> (void *p, size_t alignment)</td></tr>
<tr class="separator:ga0d28d5cf61e6bfbb18c63092939fe5c9"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga0d28d5cf61e6bfbb18c63092939fe5c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table> </table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p><code>mi_</code> prefixed implementations of various Posix, Unix, and C++ allocation functions. </p> <p><code>mi_</code> prefixed implementations of various Posix, Unix, and C++ allocation functions. </p>
<p>Defined for convenience as all redirect to the regular mimalloc API. </p> <p>Defined for convenience as all redirect to the regular mimalloc API. </p>
<h2 class="groupheader">Function Documentation</h2> <h2 class="groupheader">Function Documentation</h2>
<a id="gad5a69c8fea96aa2b7a7c818c2130090a"></a> <a id="ga66bcfeb4faedbb42b796bc680821ef84" name="ga66bcfeb4faedbb42b796bc680821ef84"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad5a69c8fea96aa2b7a7c818c2130090a">&#9670;&nbsp;</a></span>mi__posix_memalign()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga66bcfeb4faedbb42b796bc680821ef84">&#9670;&#160;</a></span>mi__expand()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void * mi__expand </td>
<td>(</td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newsize</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="gad5a69c8fea96aa2b7a7c818c2130090a" name="gad5a69c8fea96aa2b7a7c818c2130090a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad5a69c8fea96aa2b7a7c818c2130090a">&#9670;&#160;</a></span>mi__posix_memalign()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -151,61 +197,113 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">int mi__posix_memalign </td> <td class="memname">int mi__posix_memalign </td>
<td>(</td> <td>(</td>
<td class="paramtype">void **&#160;</td> <td class="paramtype">void **</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>, </td>
<td class="paramname"><em>alignment</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga1326d2e4388630b5f81ca7206318b8e5"></a> <a id="ga430ed1513f0571ff83be00ec58a98ee0" name="ga430ed1513f0571ff83be00ec58a98ee0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1326d2e4388630b5f81ca7206318b8e5">&#9670;&nbsp;</a></span>mi_aligned_alloc()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga430ed1513f0571ff83be00ec58a98ee0">&#9670;&#160;</a></span>mi_aligned_alloc()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_aligned_alloc </td> <td class="memname">void * mi_aligned_alloc </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>, </td>
<td class="paramname"><em>alignment</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga705dc7a64bffacfeeb0141501a5c35d7"></a> <a id="ga16570deddd559001b44953eedbad0084" name="ga16570deddd559001b44953eedbad0084"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga705dc7a64bffacfeeb0141501a5c35d7">&#9670;&nbsp;</a></span>mi_cfree()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga16570deddd559001b44953eedbad0084">&#9670;&#160;</a></span>mi_aligned_offset_recalloc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void * mi_aligned_offset_recalloc </td>
<td>(</td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newcount</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>offset</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="gaf82cbb4b4f24acf723348628451798d3" name="gaf82cbb4b4f24acf723348628451798d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf82cbb4b4f24acf723348628451798d3">&#9670;&#160;</a></span>mi_aligned_recalloc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void * mi_aligned_recalloc </td>
<td>(</td>
<td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newcount</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ga705dc7a64bffacfeeb0141501a5c35d7" name="ga705dc7a64bffacfeeb0141501a5c35d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga705dc7a64bffacfeeb0141501a5c35d7">&#9670;&#160;</a></span>mi_cfree()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -213,8 +311,7 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">void mi_cfree </td> <td class="memname">void mi_cfree </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span></td><td>)</td>
<td class="paramname"><em>p</em></td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
@ -224,8 +321,34 @@ Functions</h2></td></tr>
</div> </div>
</div> </div>
<a id="ga0d28d5cf61e6bfbb18c63092939fe5c9"></a> <a id="gab41369c1a1da7504013a7a0b1d4dd958" name="gab41369c1a1da7504013a7a0b1d4dd958"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0d28d5cf61e6bfbb18c63092939fe5c9">&#9670;&nbsp;</a></span>mi_free_aligned()</h2> <h2 class="memtitle"><span class="permalink"><a href="#gab41369c1a1da7504013a7a0b1d4dd958">&#9670;&#160;</a></span>mi_dupenv_s()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int mi_dupenv_s </td>
<td>(</td>
<td class="paramtype">char **</td> <td class="paramname"><span class="paramname"><em>buf</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t *</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *</td> <td class="paramname"><span class="paramname"><em>name</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ga0d28d5cf61e6bfbb18c63092939fe5c9" name="ga0d28d5cf61e6bfbb18c63092939fe5c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0d28d5cf61e6bfbb18c63092939fe5c9">&#9670;&#160;</a></span>mi_free_aligned()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -233,27 +356,20 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">void mi_free_aligned </td> <td class="memname">void mi_free_aligned </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>&#160;)</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="gae01389eedab8d67341ff52e2aad80ebb"></a> <a id="gae01389eedab8d67341ff52e2aad80ebb" name="gae01389eedab8d67341ff52e2aad80ebb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae01389eedab8d67341ff52e2aad80ebb">&#9670;&nbsp;</a></span>mi_free_size()</h2> <h2 class="memtitle"><span class="permalink"><a href="#gae01389eedab8d67341ff52e2aad80ebb">&#9670;&#160;</a></span>mi_free_size()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -261,27 +377,20 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">void mi_free_size </td> <td class="memname">void mi_free_size </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga72e9d7ffb5fe94d69bc722c8506e27bc"></a> <a id="ga72e9d7ffb5fe94d69bc722c8506e27bc" name="ga72e9d7ffb5fe94d69bc722c8506e27bc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga72e9d7ffb5fe94d69bc722c8506e27bc">&#9670;&nbsp;</a></span>mi_free_size_aligned()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga72e9d7ffb5fe94d69bc722c8506e27bc">&#9670;&#160;</a></span>mi_free_size_aligned()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -289,33 +398,42 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">void mi_free_size_aligned </td> <td class="memname">void mi_free_size_aligned </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
<td class="paramname"><em>size</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>&#160;)</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga4531c9e775bb3ae12db57c1ba8a5d7de"></a> <a id="ga9d23ac7885fed7413c11d8e0ffa31071" name="ga9d23ac7885fed7413c11d8e0ffa31071"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4531c9e775bb3ae12db57c1ba8a5d7de">&#9670;&nbsp;</a></span>mi_malloc_size()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga9d23ac7885fed7413c11d8e0ffa31071">&#9670;&#160;</a></span>mi_malloc_good_size()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t mi_malloc_good_size </td>
<td>(</td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ga4531c9e775bb3ae12db57c1ba8a5d7de" name="ga4531c9e775bb3ae12db57c1ba8a5d7de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4531c9e775bb3ae12db57c1ba8a5d7de">&#9670;&#160;</a></span>mi_malloc_size()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -323,8 +441,7 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">size_t mi_malloc_size </td> <td class="memname">size_t mi_malloc_size </td>
<td>(</td> <td>(</td>
<td class="paramtype">const void *&#160;</td> <td class="paramtype">const void *</td> <td class="paramname"><span class="paramname"><em>p</em></span></td><td>)</td>
<td class="paramname"><em>p</em></td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
@ -332,8 +449,8 @@ Functions</h2></td></tr>
</div> </div>
</div> </div>
<a id="ga06d07cf357bbac5c73ba5d0c0c421e17"></a> <a id="ga06d07cf357bbac5c73ba5d0c0c421e17" name="ga06d07cf357bbac5c73ba5d0c0c421e17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga06d07cf357bbac5c73ba5d0c0c421e17">&#9670;&nbsp;</a></span>mi_malloc_usable_size()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga06d07cf357bbac5c73ba5d0c0c421e17">&#9670;&#160;</a></span>mi_malloc_usable_size()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -341,8 +458,7 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">size_t mi_malloc_usable_size </td> <td class="memname">size_t mi_malloc_usable_size </td>
<td>(</td> <td>(</td>
<td class="paramtype">const void *&#160;</td> <td class="paramtype">const void *</td> <td class="paramname"><span class="paramname"><em>p</em></span></td><td>)</td>
<td class="paramname"><em>p</em></td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
@ -350,36 +466,46 @@ Functions</h2></td></tr>
</div> </div>
</div> </div>
<a id="gaab7fa71ea93b96873f5d9883db57d40e"></a> <a id="ga7b82a44094fdec4d2084eb4288a979b0" name="ga7b82a44094fdec4d2084eb4288a979b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaab7fa71ea93b96873f5d9883db57d40e">&#9670;&nbsp;</a></span>mi_memalign()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga7b82a44094fdec4d2084eb4288a979b0">&#9670;&#160;</a></span>mi_mbsdup()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_memalign </td> <td class="memname">unsigned char * mi_mbsdup </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">const unsigned char *</td> <td class="paramname"><span class="paramname"><em>s</em></span></td><td>)</td>
<td class="paramname"><em>alignment</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="gacff84f226ba9feb2031b8992e5579447"></a> <a id="ga726867f13fd29ca36064954c0285b1d8" name="ga726867f13fd29ca36064954c0285b1d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacff84f226ba9feb2031b8992e5579447">&#9670;&nbsp;</a></span>mi_posix_memalign()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga726867f13fd29ca36064954c0285b1d8">&#9670;&#160;</a></span>mi_memalign()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void * mi_memalign </td>
<td>(</td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="gacff84f226ba9feb2031b8992e5579447" name="gacff84f226ba9feb2031b8992e5579447"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacff84f226ba9feb2031b8992e5579447">&#9670;&#160;</a></span>mi_posix_memalign()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -387,42 +513,33 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">int mi_posix_memalign </td> <td class="memname">int mi_posix_memalign </td>
<td>(</td> <td>(</td>
<td class="paramtype">void **&#160;</td> <td class="paramtype">void **</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>, </td>
<td class="paramname"><em>alignment</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="gaeb325c39b887d3b90d85d1eb1712fb1e"></a> <a id="ga644bebccdbb2821542dd8c7e7641f476" name="ga644bebccdbb2821542dd8c7e7641f476"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaeb325c39b887d3b90d85d1eb1712fb1e">&#9670;&nbsp;</a></span>mi_pvalloc()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga644bebccdbb2821542dd8c7e7641f476">&#9670;&#160;</a></span>mi_pvalloc()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_pvalloc </td> <td class="memname">void * mi_pvalloc </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span></td><td>)</td>
<td class="paramname"><em>size</em></td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
@ -430,8 +547,8 @@ Functions</h2></td></tr>
</div> </div>
</div> </div>
<a id="ga7e1934d60a3e697950eeb48e042bfad5"></a> <a id="ga7e1934d60a3e697950eeb48e042bfad5" name="ga7e1934d60a3e697950eeb48e042bfad5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7e1934d60a3e697950eeb48e042bfad5">&#9670;&nbsp;</a></span>mi_reallocarr()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga7e1934d60a3e697950eeb48e042bfad5">&#9670;&#160;</a></span>mi_reallocarr()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -439,25 +556,17 @@ Functions</h2></td></tr>
<tr> <tr>
<td class="memname">int mi_reallocarr </td> <td class="memname">int mi_reallocarr </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>count</em></span>, </td>
<td class="paramname"><em>count</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
@ -466,34 +575,26 @@ Functions</h2></td></tr>
</div> </div>
</div> </div>
<a id="ga48fad8648a2f1dab9c87ea9448a52088"></a> <a id="gadfeccb72748a2f6305474a37d9d57bce" name="gadfeccb72748a2f6305474a37d9d57bce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga48fad8648a2f1dab9c87ea9448a52088">&#9670;&nbsp;</a></span>mi_reallocarray()</h2> <h2 class="memtitle"><span class="permalink"><a href="#gadfeccb72748a2f6305474a37d9d57bce">&#9670;&#160;</a></span>mi_reallocarray()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_reallocarray </td> <td class="memname">void * mi_reallocarray </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>count</em></span>, </td>
<td class="paramname"><em>count</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
@ -502,22 +603,64 @@ Functions</h2></td></tr>
</div> </div>
</div> </div>
<a id="ga73baaf5951f5165ba0763d0c06b6a93b"></a> <a id="ga50cafb9722020402f065de93799f64ca" name="ga50cafb9722020402f065de93799f64ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga73baaf5951f5165ba0763d0c06b6a93b">&#9670;&nbsp;</a></span>mi_valloc()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga50cafb9722020402f065de93799f64ca">&#9670;&#160;</a></span>mi_valloc()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_valloc </td> <td class="memname">void * mi_valloc </td>
<td>(</td> <td>(</td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span></td><td>)</td>
<td class="paramname"><em>size</em></td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div>
</div>
<a id="gaa9fd7f25c9ac3a20e89b33bd6e383fcf" name="gaa9fd7f25c9ac3a20e89b33bd6e383fcf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa9fd7f25c9ac3a20e89b33bd6e383fcf">&#9670;&#160;</a></span>mi_wcsdup()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned short * mi_wcsdup </td>
<td>(</td>
<td class="paramtype">const unsigned short *</td> <td class="paramname"><span class="paramname"><em>s</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ga6ac6a6a8f3c96f1af24bb8d0439cbbd1" name="ga6ac6a6a8f3c96f1af24bb8d0439cbbd1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6ac6a6a8f3c96f1af24bb8d0439cbbd1">&#9670;&#160;</a></span>mi_wdupenv_s()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int mi_wdupenv_s </td>
<td>(</td>
<td class="paramtype">unsigned short **</td> <td class="paramname"><span class="paramname"><em>buf</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t *</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const unsigned short *</td> <td class="paramname"><span class="paramname"><em>name</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
</div> </div>
</div> </div>
</div><!-- contents --> </div><!-- contents -->
@ -525,7 +668,7 @@ Functions</h2></td></tr>
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -1,17 +1,25 @@
var group__posix = var group__posix =
[ [
[ "mi__expand", "group__posix.html#ga66bcfeb4faedbb42b796bc680821ef84", null ],
[ "mi__posix_memalign", "group__posix.html#gad5a69c8fea96aa2b7a7c818c2130090a", null ], [ "mi__posix_memalign", "group__posix.html#gad5a69c8fea96aa2b7a7c818c2130090a", null ],
[ "mi_aligned_alloc", "group__posix.html#ga1326d2e4388630b5f81ca7206318b8e5", null ], [ "mi_aligned_alloc", "group__posix.html#ga430ed1513f0571ff83be00ec58a98ee0", null ],
[ "mi_aligned_offset_recalloc", "group__posix.html#ga16570deddd559001b44953eedbad0084", null ],
[ "mi_aligned_recalloc", "group__posix.html#gaf82cbb4b4f24acf723348628451798d3", null ],
[ "mi_cfree", "group__posix.html#ga705dc7a64bffacfeeb0141501a5c35d7", null ], [ "mi_cfree", "group__posix.html#ga705dc7a64bffacfeeb0141501a5c35d7", null ],
[ "mi_dupenv_s", "group__posix.html#gab41369c1a1da7504013a7a0b1d4dd958", null ],
[ "mi_free_aligned", "group__posix.html#ga0d28d5cf61e6bfbb18c63092939fe5c9", null ], [ "mi_free_aligned", "group__posix.html#ga0d28d5cf61e6bfbb18c63092939fe5c9", null ],
[ "mi_free_size", "group__posix.html#gae01389eedab8d67341ff52e2aad80ebb", null ], [ "mi_free_size", "group__posix.html#gae01389eedab8d67341ff52e2aad80ebb", null ],
[ "mi_free_size_aligned", "group__posix.html#ga72e9d7ffb5fe94d69bc722c8506e27bc", null ], [ "mi_free_size_aligned", "group__posix.html#ga72e9d7ffb5fe94d69bc722c8506e27bc", null ],
[ "mi_malloc_good_size", "group__posix.html#ga9d23ac7885fed7413c11d8e0ffa31071", null ],
[ "mi_malloc_size", "group__posix.html#ga4531c9e775bb3ae12db57c1ba8a5d7de", null ], [ "mi_malloc_size", "group__posix.html#ga4531c9e775bb3ae12db57c1ba8a5d7de", null ],
[ "mi_malloc_usable_size", "group__posix.html#ga06d07cf357bbac5c73ba5d0c0c421e17", null ], [ "mi_malloc_usable_size", "group__posix.html#ga06d07cf357bbac5c73ba5d0c0c421e17", null ],
[ "mi_memalign", "group__posix.html#gaab7fa71ea93b96873f5d9883db57d40e", null ], [ "mi_mbsdup", "group__posix.html#ga7b82a44094fdec4d2084eb4288a979b0", null ],
[ "mi_memalign", "group__posix.html#ga726867f13fd29ca36064954c0285b1d8", null ],
[ "mi_posix_memalign", "group__posix.html#gacff84f226ba9feb2031b8992e5579447", null ], [ "mi_posix_memalign", "group__posix.html#gacff84f226ba9feb2031b8992e5579447", null ],
[ "mi_pvalloc", "group__posix.html#gaeb325c39b887d3b90d85d1eb1712fb1e", null ], [ "mi_pvalloc", "group__posix.html#ga644bebccdbb2821542dd8c7e7641f476", null ],
[ "mi_reallocarr", "group__posix.html#ga7e1934d60a3e697950eeb48e042bfad5", null ], [ "mi_reallocarr", "group__posix.html#ga7e1934d60a3e697950eeb48e042bfad5", null ],
[ "mi_reallocarray", "group__posix.html#ga48fad8648a2f1dab9c87ea9448a52088", null ], [ "mi_reallocarray", "group__posix.html#gadfeccb72748a2f6305474a37d9d57bce", null ],
[ "mi_valloc", "group__posix.html#ga73baaf5951f5165ba0763d0c06b6a93b", null ] [ "mi_valloc", "group__posix.html#ga50cafb9722020402f065de93799f64ca", null ],
[ "mi_wcsdup", "group__posix.html#gaa9fd7f25c9ac3a20e89b33bd6e383fcf", null ],
[ "mi_wdupenv_s", "group__posix.html#ga6ac6a6a8f3c96f1af24bb8d0439cbbd1", null ]
]; ];

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Typed Macros</title> <title>mi-malloc: Typed Macros</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('group__typed.html',''); initResizable(); }); $(function(){initNavTree('group__typed.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,65 +91,71 @@ $(document).ready(function(){initNavTree('group__typed.html',''); initResizable(
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#define-members">Macros</a> </div> <a href="#define-members">Macros</a> </div>
<div class="headertitle"> <div class="headertitle"><div class="title">Typed Macros</div></div>
<div class="title">Typed Macros</div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<p>Typed allocation macros. <p>Typed allocation macros.
<a href="#details">More...</a></p> <a href="#details">More...</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr> Macros</h2></td></tr>
<tr class="memitem:ga0619a62c5fd886f1016030abe91f0557"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__typed.html#ga0619a62c5fd886f1016030abe91f0557">mi_malloc_tp</a>(tp)</td></tr> <tr class="memitem:ga0619a62c5fd886f1016030abe91f0557" id="r_ga0619a62c5fd886f1016030abe91f0557"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga0619a62c5fd886f1016030abe91f0557">mi_malloc_tp</a>(tp)</td></tr>
<tr class="memdesc:ga0619a62c5fd886f1016030abe91f0557"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a block of type <em>tp</em>. <a href="group__typed.html#ga0619a62c5fd886f1016030abe91f0557">More...</a><br /></td></tr> <tr class="memdesc:ga0619a62c5fd886f1016030abe91f0557"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a block of type <em class="arg">tp</em>. <br /></td></tr>
<tr class="separator:ga0619a62c5fd886f1016030abe91f0557"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga0619a62c5fd886f1016030abe91f0557"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac77a61bdaf680a803785fe307820b48c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__typed.html#gac77a61bdaf680a803785fe307820b48c">mi_zalloc_tp</a>(tp)</td></tr> <tr class="memitem:gac77a61bdaf680a803785fe307820b48c" id="r_gac77a61bdaf680a803785fe307820b48c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gac77a61bdaf680a803785fe307820b48c">mi_zalloc_tp</a>(tp)</td></tr>
<tr class="memdesc:gac77a61bdaf680a803785fe307820b48c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a zero-initialized block of type <em>tp</em>. <a href="group__typed.html#gac77a61bdaf680a803785fe307820b48c">More...</a><br /></td></tr> <tr class="memdesc:gac77a61bdaf680a803785fe307820b48c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a zero-initialized block of type <em class="arg">tp</em>. <br /></td></tr>
<tr class="separator:gac77a61bdaf680a803785fe307820b48c"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gac77a61bdaf680a803785fe307820b48c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae80c47c9d4cab10961fff1a8ac98fc07"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__typed.html#gae80c47c9d4cab10961fff1a8ac98fc07">mi_calloc_tp</a>(tp, count)</td></tr> <tr class="memitem:gae80c47c9d4cab10961fff1a8ac98fc07" id="r_gae80c47c9d4cab10961fff1a8ac98fc07"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gae80c47c9d4cab10961fff1a8ac98fc07">mi_calloc_tp</a>(tp, count)</td></tr>
<tr class="memdesc:gae80c47c9d4cab10961fff1a8ac98fc07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em>count</em> zero-initialized blocks of type <em>tp</em>. <a href="group__typed.html#gae80c47c9d4cab10961fff1a8ac98fc07">More...</a><br /></td></tr> <tr class="memdesc:gae80c47c9d4cab10961fff1a8ac98fc07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em class="arg">count</em> zero-initialized blocks of type <em class="arg">tp</em>. <br /></td></tr>
<tr class="separator:gae80c47c9d4cab10961fff1a8ac98fc07"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gae80c47c9d4cab10961fff1a8ac98fc07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae5cb6e0fafc9f23169c5622e077afe8b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__typed.html#gae5cb6e0fafc9f23169c5622e077afe8b">mi_mallocn_tp</a>(tp, count)</td></tr> <tr class="memitem:gae5cb6e0fafc9f23169c5622e077afe8b" id="r_gae5cb6e0fafc9f23169c5622e077afe8b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gae5cb6e0fafc9f23169c5622e077afe8b">mi_mallocn_tp</a>(tp, count)</td></tr>
<tr class="memdesc:gae5cb6e0fafc9f23169c5622e077afe8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em>count</em> blocks of type <em>tp</em>. <a href="group__typed.html#gae5cb6e0fafc9f23169c5622e077afe8b">More...</a><br /></td></tr> <tr class="memdesc:gae5cb6e0fafc9f23169c5622e077afe8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em class="arg">count</em> blocks of type <em class="arg">tp</em>. <br /></td></tr>
<tr class="separator:gae5cb6e0fafc9f23169c5622e077afe8b"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gae5cb6e0fafc9f23169c5622e077afe8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1158b49a55dfa81f58a4426a7578f523"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__typed.html#ga1158b49a55dfa81f58a4426a7578f523">mi_reallocn_tp</a>(p, tp, count)</td></tr> <tr class="memitem:ga1158b49a55dfa81f58a4426a7578f523" id="r_ga1158b49a55dfa81f58a4426a7578f523"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga1158b49a55dfa81f58a4426a7578f523">mi_reallocn_tp</a>(p, tp, count)</td></tr>
<tr class="memdesc:ga1158b49a55dfa81f58a4426a7578f523"><td class="mdescLeft">&#160;</td><td class="mdescRight">Re-allocate to <em>count</em> blocks of type <em>tp</em>. <a href="group__typed.html#ga1158b49a55dfa81f58a4426a7578f523">More...</a><br /></td></tr> <tr class="memdesc:ga1158b49a55dfa81f58a4426a7578f523"><td class="mdescLeft">&#160;</td><td class="mdescRight">Re-allocate to <em class="arg">count</em> blocks of type <em class="arg">tp</em>. <br /></td></tr>
<tr class="separator:ga1158b49a55dfa81f58a4426a7578f523"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga1158b49a55dfa81f58a4426a7578f523"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga653bcb24ac495bc19940ecd6898f9cd7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__typed.html#ga653bcb24ac495bc19940ecd6898f9cd7">mi_heap_malloc_tp</a>(hp, tp)</td></tr> <tr class="memitem:ga653bcb24ac495bc19940ecd6898f9cd7" id="r_ga653bcb24ac495bc19940ecd6898f9cd7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga653bcb24ac495bc19940ecd6898f9cd7">mi_heap_malloc_tp</a>(hp, tp)</td></tr>
<tr class="memdesc:ga653bcb24ac495bc19940ecd6898f9cd7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a block of type <em>tp</em> in a heap <em>hp</em>. <a href="group__typed.html#ga653bcb24ac495bc19940ecd6898f9cd7">More...</a><br /></td></tr> <tr class="memdesc:ga653bcb24ac495bc19940ecd6898f9cd7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a block of type <em class="arg">tp</em> in a heap <em class="arg">hp</em>. <br /></td></tr>
<tr class="separator:ga653bcb24ac495bc19940ecd6898f9cd7"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga653bcb24ac495bc19940ecd6898f9cd7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad6e87e86e994aa14416ae9b5d4c188fe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__typed.html#gad6e87e86e994aa14416ae9b5d4c188fe">mi_heap_zalloc_tp</a>(hp, tp)</td></tr> <tr class="memitem:gad6e87e86e994aa14416ae9b5d4c188fe" id="r_gad6e87e86e994aa14416ae9b5d4c188fe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gad6e87e86e994aa14416ae9b5d4c188fe">mi_heap_zalloc_tp</a>(hp, tp)</td></tr>
<tr class="memdesc:gad6e87e86e994aa14416ae9b5d4c188fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a zero-initialized block of type <em>tp</em> in a heap <em>hp</em>. <a href="group__typed.html#gad6e87e86e994aa14416ae9b5d4c188fe">More...</a><br /></td></tr> <tr class="memdesc:gad6e87e86e994aa14416ae9b5d4c188fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a zero-initialized block of type <em class="arg">tp</em> in a heap <em class="arg">hp</em>. <br /></td></tr>
<tr class="separator:gad6e87e86e994aa14416ae9b5d4c188fe"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gad6e87e86e994aa14416ae9b5d4c188fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4e5d1f1707c90e5f55e023ac5f45fe74"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__typed.html#ga4e5d1f1707c90e5f55e023ac5f45fe74">mi_heap_calloc_tp</a>(hp, tp, count)</td></tr> <tr class="memitem:ga4e5d1f1707c90e5f55e023ac5f45fe74" id="r_ga4e5d1f1707c90e5f55e023ac5f45fe74"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga4e5d1f1707c90e5f55e023ac5f45fe74">mi_heap_calloc_tp</a>(hp, tp, count)</td></tr>
<tr class="memdesc:ga4e5d1f1707c90e5f55e023ac5f45fe74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em>count</em> zero-initialized blocks of type <em>tp</em> in a heap <em>hp</em>. <a href="group__typed.html#ga4e5d1f1707c90e5f55e023ac5f45fe74">More...</a><br /></td></tr> <tr class="memdesc:ga4e5d1f1707c90e5f55e023ac5f45fe74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em class="arg">count</em> zero-initialized blocks of type <em class="arg">tp</em> in a heap <em class="arg">hp</em>. <br /></td></tr>
<tr class="separator:ga4e5d1f1707c90e5f55e023ac5f45fe74"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga4e5d1f1707c90e5f55e023ac5f45fe74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6b75cb9c4b9c647661d0924552dc6e83"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__typed.html#ga6b75cb9c4b9c647661d0924552dc6e83">mi_heap_mallocn_tp</a>(hp, tp, count)</td></tr> <tr class="memitem:ga6b75cb9c4b9c647661d0924552dc6e83" id="r_ga6b75cb9c4b9c647661d0924552dc6e83"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga6b75cb9c4b9c647661d0924552dc6e83">mi_heap_mallocn_tp</a>(hp, tp, count)</td></tr>
<tr class="memdesc:ga6b75cb9c4b9c647661d0924552dc6e83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em>count</em> blocks of type <em>tp</em> in a heap <em>hp</em>. <a href="group__typed.html#ga6b75cb9c4b9c647661d0924552dc6e83">More...</a><br /></td></tr> <tr class="memdesc:ga6b75cb9c4b9c647661d0924552dc6e83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate <em class="arg">count</em> blocks of type <em class="arg">tp</em> in a heap <em class="arg">hp</em>. <br /></td></tr>
<tr class="separator:ga6b75cb9c4b9c647661d0924552dc6e83"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga6b75cb9c4b9c647661d0924552dc6e83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf213d5422ec35e7f6caad827c79bc948"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__typed.html#gaf213d5422ec35e7f6caad827c79bc948">mi_heap_reallocn_tp</a>(hp, p, tp, count)</td></tr> <tr class="memitem:gaf213d5422ec35e7f6caad827c79bc948" id="r_gaf213d5422ec35e7f6caad827c79bc948"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaf213d5422ec35e7f6caad827c79bc948">mi_heap_reallocn_tp</a>(hp, p, tp, count)</td></tr>
<tr class="memdesc:gaf213d5422ec35e7f6caad827c79bc948"><td class="mdescLeft">&#160;</td><td class="mdescRight">Re-allocate to <em>count</em> blocks of type <em>tp</em> in a heap <em>hp</em>. <a href="group__typed.html#gaf213d5422ec35e7f6caad827c79bc948">More...</a><br /></td></tr> <tr class="memdesc:gaf213d5422ec35e7f6caad827c79bc948"><td class="mdescLeft">&#160;</td><td class="mdescRight">Re-allocate to <em class="arg">count</em> blocks of type <em class="arg">tp</em> in a heap <em class="arg">hp</em>. <br /></td></tr>
<tr class="separator:gaf213d5422ec35e7f6caad827c79bc948"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gaf213d5422ec35e7f6caad827c79bc948"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3e50a1600958fcaf1a7f3560c9174f9e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__typed.html#ga3e50a1600958fcaf1a7f3560c9174f9e">mi_heap_recalloc_tp</a>(hp, p, tp, count)</td></tr> <tr class="memitem:ga3e50a1600958fcaf1a7f3560c9174f9e" id="r_ga3e50a1600958fcaf1a7f3560c9174f9e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga3e50a1600958fcaf1a7f3560c9174f9e">mi_heap_recalloc_tp</a>(hp, p, tp, count)</td></tr>
<tr class="memdesc:ga3e50a1600958fcaf1a7f3560c9174f9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Re-allocate to <em>count</em> zero initialized blocks of type <em>tp</em> in a heap <em>hp</em>. <a href="group__typed.html#ga3e50a1600958fcaf1a7f3560c9174f9e">More...</a><br /></td></tr> <tr class="memdesc:ga3e50a1600958fcaf1a7f3560c9174f9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Re-allocate to <em class="arg">count</em> zero initialized blocks of type <em class="arg">tp</em> in a heap <em class="arg">hp</em>. <br /></td></tr>
<tr class="separator:ga3e50a1600958fcaf1a7f3560c9174f9e"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga3e50a1600958fcaf1a7f3560c9174f9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table> </table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Typed allocation macros. </p> <p>Typed allocation macros. </p>
<p>For example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span>* p = <a class="code" href="group__typed.html#ga0619a62c5fd886f1016030abe91f0557">mi_malloc_tp</a>(<span class="keywordtype">int</span>)</div> <p>For example: </p><div class="fragment"><div class="line"><span class="keywordtype">int</span>* p = <a class="code hl_define" href="#ga0619a62c5fd886f1016030abe91f0557">mi_malloc_tp</a>(<span class="keywordtype">int</span>)</div>
<div class="ttc" id="agroup__typed_html_ga0619a62c5fd886f1016030abe91f0557"><div class="ttname"><a href="group__typed.html#ga0619a62c5fd886f1016030abe91f0557">mi_malloc_tp</a></div><div class="ttdeci">#define mi_malloc_tp(tp)</div><div class="ttdoc">Allocate a block of type tp.</div><div class="ttdef"><b>Definition:</b> mimalloc-doc.h:692</div></div> <div class="ttc" id="agroup__typed_html_ga0619a62c5fd886f1016030abe91f0557"><div class="ttname"><a href="#ga0619a62c5fd886f1016030abe91f0557">mi_malloc_tp</a></div><div class="ttdeci">#define mi_malloc_tp(tp)</div><div class="ttdoc">Allocate a block of type tp.</div><div class="ttdef"><b>Definition</b> mimalloc-doc.h:784</div></div>
</div><!-- fragment --> <h2 class="groupheader">Macro Definition Documentation</h2> </div><!-- fragment --> <h2 class="groupheader">Macro Definition Documentation</h2>
<a id="gae80c47c9d4cab10961fff1a8ac98fc07"></a> <a id="gae80c47c9d4cab10961fff1a8ac98fc07" name="gae80c47c9d4cab10961fff1a8ac98fc07"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae80c47c9d4cab10961fff1a8ac98fc07">&#9670;&nbsp;</a></span>mi_calloc_tp</h2> <h2 class="memtitle"><span class="permalink"><a href="#gae80c47c9d4cab10961fff1a8ac98fc07">&#9670;&#160;</a></span>mi_calloc_tp</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -154,29 +163,22 @@ Macros</h2></td></tr>
<tr> <tr>
<td class="memname">#define mi_calloc_tp</td> <td class="memname">#define mi_calloc_tp</td>
<td>(</td> <td>(</td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>tp</em></span>, </td>
<td class="paramname">tp, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>count</em></span>&#160;)</td>
<td class="paramname">count&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Allocate <em>count</em> zero-initialized blocks of type <em>tp</em>. </p> <p>Allocate <em class="arg">count</em> zero-initialized blocks of type <em class="arg">tp</em>. </p>
</div> </div>
</div> </div>
<a id="ga4e5d1f1707c90e5f55e023ac5f45fe74"></a> <a id="ga4e5d1f1707c90e5f55e023ac5f45fe74" name="ga4e5d1f1707c90e5f55e023ac5f45fe74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4e5d1f1707c90e5f55e023ac5f45fe74">&#9670;&nbsp;</a></span>mi_heap_calloc_tp</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga4e5d1f1707c90e5f55e023ac5f45fe74">&#9670;&#160;</a></span>mi_heap_calloc_tp</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -184,35 +186,27 @@ Macros</h2></td></tr>
<tr> <tr>
<td class="memname">#define mi_heap_calloc_tp</td> <td class="memname">#define mi_heap_calloc_tp</td>
<td>(</td> <td>(</td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>hp</em></span>, </td>
<td class="paramname">hp, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>tp</em></span>, </td>
<td class="paramname">tp, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>count</em></span>&#160;)</td>
<td class="paramname">count&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Allocate <em>count</em> zero-initialized blocks of type <em>tp</em> in a heap <em>hp</em>. </p> <p>Allocate <em class="arg">count</em> zero-initialized blocks of type <em class="arg">tp</em> in a heap <em class="arg">hp</em>. </p>
</div> </div>
</div> </div>
<a id="ga653bcb24ac495bc19940ecd6898f9cd7"></a> <a id="ga653bcb24ac495bc19940ecd6898f9cd7" name="ga653bcb24ac495bc19940ecd6898f9cd7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga653bcb24ac495bc19940ecd6898f9cd7">&#9670;&nbsp;</a></span>mi_heap_malloc_tp</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga653bcb24ac495bc19940ecd6898f9cd7">&#9670;&#160;</a></span>mi_heap_malloc_tp</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -220,29 +214,22 @@ Macros</h2></td></tr>
<tr> <tr>
<td class="memname">#define mi_heap_malloc_tp</td> <td class="memname">#define mi_heap_malloc_tp</td>
<td>(</td> <td>(</td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>hp</em></span>, </td>
<td class="paramname">hp, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>tp</em></span>&#160;)</td>
<td class="paramname">tp&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Allocate a block of type <em>tp</em> in a heap <em>hp</em>. </p> <p>Allocate a block of type <em class="arg">tp</em> in a heap <em class="arg">hp</em>. </p>
</div> </div>
</div> </div>
<a id="ga6b75cb9c4b9c647661d0924552dc6e83"></a> <a id="ga6b75cb9c4b9c647661d0924552dc6e83" name="ga6b75cb9c4b9c647661d0924552dc6e83"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6b75cb9c4b9c647661d0924552dc6e83">&#9670;&nbsp;</a></span>mi_heap_mallocn_tp</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga6b75cb9c4b9c647661d0924552dc6e83">&#9670;&#160;</a></span>mi_heap_mallocn_tp</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -250,35 +237,27 @@ Macros</h2></td></tr>
<tr> <tr>
<td class="memname">#define mi_heap_mallocn_tp</td> <td class="memname">#define mi_heap_mallocn_tp</td>
<td>(</td> <td>(</td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>hp</em></span>, </td>
<td class="paramname">hp, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>tp</em></span>, </td>
<td class="paramname">tp, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>count</em></span>&#160;)</td>
<td class="paramname">count&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Allocate <em>count</em> blocks of type <em>tp</em> in a heap <em>hp</em>. </p> <p>Allocate <em class="arg">count</em> blocks of type <em class="arg">tp</em> in a heap <em class="arg">hp</em>. </p>
</div> </div>
</div> </div>
<a id="gaf213d5422ec35e7f6caad827c79bc948"></a> <a id="gaf213d5422ec35e7f6caad827c79bc948" name="gaf213d5422ec35e7f6caad827c79bc948"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf213d5422ec35e7f6caad827c79bc948">&#9670;&nbsp;</a></span>mi_heap_reallocn_tp</h2> <h2 class="memtitle"><span class="permalink"><a href="#gaf213d5422ec35e7f6caad827c79bc948">&#9670;&#160;</a></span>mi_heap_reallocn_tp</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -286,41 +265,32 @@ Macros</h2></td></tr>
<tr> <tr>
<td class="memname">#define mi_heap_reallocn_tp</td> <td class="memname">#define mi_heap_reallocn_tp</td>
<td>(</td> <td>(</td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>hp</em></span>, </td>
<td class="paramname">hp, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname">p, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>tp</em></span>, </td>
<td class="paramname">tp, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>count</em></span>&#160;)</td>
<td class="paramname">count&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Re-allocate to <em>count</em> blocks of type <em>tp</em> in a heap <em>hp</em>. </p> <p>Re-allocate to <em class="arg">count</em> blocks of type <em class="arg">tp</em> in a heap <em class="arg">hp</em>. </p>
</div> </div>
</div> </div>
<a id="ga3e50a1600958fcaf1a7f3560c9174f9e"></a> <a id="ga3e50a1600958fcaf1a7f3560c9174f9e" name="ga3e50a1600958fcaf1a7f3560c9174f9e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3e50a1600958fcaf1a7f3560c9174f9e">&#9670;&nbsp;</a></span>mi_heap_recalloc_tp</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga3e50a1600958fcaf1a7f3560c9174f9e">&#9670;&#160;</a></span>mi_heap_recalloc_tp</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -328,41 +298,32 @@ Macros</h2></td></tr>
<tr> <tr>
<td class="memname">#define mi_heap_recalloc_tp</td> <td class="memname">#define mi_heap_recalloc_tp</td>
<td>(</td> <td>(</td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>hp</em></span>, </td>
<td class="paramname">hp, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname">p, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>tp</em></span>, </td>
<td class="paramname">tp, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>count</em></span>&#160;)</td>
<td class="paramname">count&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Re-allocate to <em>count</em> zero initialized blocks of type <em>tp</em> in a heap <em>hp</em>. </p> <p>Re-allocate to <em class="arg">count</em> zero initialized blocks of type <em class="arg">tp</em> in a heap <em class="arg">hp</em>. </p>
</div> </div>
</div> </div>
<a id="gad6e87e86e994aa14416ae9b5d4c188fe"></a> <a id="gad6e87e86e994aa14416ae9b5d4c188fe" name="gad6e87e86e994aa14416ae9b5d4c188fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad6e87e86e994aa14416ae9b5d4c188fe">&#9670;&nbsp;</a></span>mi_heap_zalloc_tp</h2> <h2 class="memtitle"><span class="permalink"><a href="#gad6e87e86e994aa14416ae9b5d4c188fe">&#9670;&#160;</a></span>mi_heap_zalloc_tp</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -370,29 +331,22 @@ Macros</h2></td></tr>
<tr> <tr>
<td class="memname">#define mi_heap_zalloc_tp</td> <td class="memname">#define mi_heap_zalloc_tp</td>
<td>(</td> <td>(</td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>hp</em></span>, </td>
<td class="paramname">hp, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>tp</em></span>&#160;)</td>
<td class="paramname">tp&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Allocate a zero-initialized block of type <em>tp</em> in a heap <em>hp</em>. </p> <p>Allocate a zero-initialized block of type <em class="arg">tp</em> in a heap <em class="arg">hp</em>. </p>
</div> </div>
</div> </div>
<a id="ga0619a62c5fd886f1016030abe91f0557"></a> <a id="ga0619a62c5fd886f1016030abe91f0557" name="ga0619a62c5fd886f1016030abe91f0557"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0619a62c5fd886f1016030abe91f0557">&#9670;&nbsp;</a></span>mi_malloc_tp</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga0619a62c5fd886f1016030abe91f0557">&#9670;&#160;</a></span>mi_malloc_tp</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -400,28 +354,27 @@ Macros</h2></td></tr>
<tr> <tr>
<td class="memname">#define mi_malloc_tp</td> <td class="memname">#define mi_malloc_tp</td>
<td>(</td> <td>(</td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>tp</em></span></td><td>)</td>
<td class="paramname">tp</td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Allocate a block of type <em>tp</em>. </p> <p>Allocate a block of type <em class="arg">tp</em>. </p>
<dl class="params"><dt>Parameters</dt><dd> <dl class="params"><dt>Parameters</dt><dd>
<table class="params"> <table class="params">
<tr><td class="paramname">tp</td><td>The type of the block to allocate. </td></tr> <tr><td class="paramname">tp</td><td>The type of the block to allocate. </td></tr>
</table> </table>
</dd> </dd>
</dl> </dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to an object of type <em>tp</em>, or <em>NULL</em> if out of memory.</dd></dl> <dl class="section return"><dt>Returns</dt><dd>A pointer to an object of type <em class="arg">tp</em>, or <em class="arg">NULL</em> if out of memory.</dd></dl>
<p><b>Example:</b> </p><div class="fragment"><div class="line"><span class="keywordtype">int</span>* p = <a class="code" href="group__typed.html#ga0619a62c5fd886f1016030abe91f0557">mi_malloc_tp</a>(<span class="keywordtype">int</span>)</div> <p><b>Example:</b> </p><div class="fragment"><div class="line"><span class="keywordtype">int</span>* p = <a class="code hl_define" href="#ga0619a62c5fd886f1016030abe91f0557">mi_malloc_tp</a>(<span class="keywordtype">int</span>)</div>
</div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__malloc.html#ga3406e8b168bc74c8637b11571a6da83a" title="Allocate size bytes.">mi_malloc()</a> </dd></dl> </div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__malloc.html#gae1dd97b542420c87ae085e822b1229e8" title="Allocate size bytes.">mi_malloc()</a> </dd></dl>
</div> </div>
</div> </div>
<a id="gae5cb6e0fafc9f23169c5622e077afe8b"></a> <a id="gae5cb6e0fafc9f23169c5622e077afe8b" name="gae5cb6e0fafc9f23169c5622e077afe8b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae5cb6e0fafc9f23169c5622e077afe8b">&#9670;&nbsp;</a></span>mi_mallocn_tp</h2> <h2 class="memtitle"><span class="permalink"><a href="#gae5cb6e0fafc9f23169c5622e077afe8b">&#9670;&#160;</a></span>mi_mallocn_tp</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -429,29 +382,22 @@ Macros</h2></td></tr>
<tr> <tr>
<td class="memname">#define mi_mallocn_tp</td> <td class="memname">#define mi_mallocn_tp</td>
<td>(</td> <td>(</td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>tp</em></span>, </td>
<td class="paramname">tp, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>count</em></span>&#160;)</td>
<td class="paramname">count&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Allocate <em>count</em> blocks of type <em>tp</em>. </p> <p>Allocate <em class="arg">count</em> blocks of type <em class="arg">tp</em>. </p>
</div> </div>
</div> </div>
<a id="ga1158b49a55dfa81f58a4426a7578f523"></a> <a id="ga1158b49a55dfa81f58a4426a7578f523" name="ga1158b49a55dfa81f58a4426a7578f523"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1158b49a55dfa81f58a4426a7578f523">&#9670;&nbsp;</a></span>mi_reallocn_tp</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga1158b49a55dfa81f58a4426a7578f523">&#9670;&#160;</a></span>mi_reallocn_tp</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -459,35 +405,27 @@ Macros</h2></td></tr>
<tr> <tr>
<td class="memname">#define mi_reallocn_tp</td> <td class="memname">#define mi_reallocn_tp</td>
<td>(</td> <td>(</td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname">p, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>tp</em></span>, </td>
<td class="paramname">tp, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>count</em></span>&#160;)</td>
<td class="paramname">count&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Re-allocate to <em>count</em> blocks of type <em>tp</em>. </p> <p>Re-allocate to <em class="arg">count</em> blocks of type <em class="arg">tp</em>. </p>
</div> </div>
</div> </div>
<a id="gac77a61bdaf680a803785fe307820b48c"></a> <a id="gac77a61bdaf680a803785fe307820b48c" name="gac77a61bdaf680a803785fe307820b48c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac77a61bdaf680a803785fe307820b48c">&#9670;&nbsp;</a></span>mi_zalloc_tp</h2> <h2 class="memtitle"><span class="permalink"><a href="#gac77a61bdaf680a803785fe307820b48c">&#9670;&#160;</a></span>mi_zalloc_tp</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
@ -495,14 +433,13 @@ Macros</h2></td></tr>
<tr> <tr>
<td class="memname">#define mi_zalloc_tp</td> <td class="memname">#define mi_zalloc_tp</td>
<td>(</td> <td>(</td>
<td class="paramtype">&#160;</td> <td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>tp</em></span></td><td>)</td>
<td class="paramname">tp</td><td>)</td>
<td></td> <td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
<p>Allocate a zero-initialized block of type <em>tp</em>. </p> <p>Allocate a zero-initialized block of type <em class="arg">tp</em>. </p>
</div> </div>
</div> </div>
@ -511,7 +448,7 @@ Macros</h2></td></tr>
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Zero initialized re-allocation</title> <title>mi-malloc: Zero initialized re-allocation</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('group__zeroinit.html',''); initResizable(); }); $(function(){initNavTree('group__zeroinit.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,491 +91,397 @@ $(document).ready(function(){initNavTree('group__zeroinit.html',''); initResizab
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="header"> <div class="header">
<div class="summary"> <div class="summary">
<a href="#func-members">Functions</a> </div> <a href="#func-members">Functions</a> </div>
<div class="headertitle"> <div class="headertitle"><div class="title">Zero initialized re-allocation</div></div>
<div class="title">Zero initialized re-allocation</div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<p>The zero-initialized re-allocations are only valid on memory that was originally allocated with zero initialization too. <p>The zero-initialized re-allocations are only valid on memory that was originally allocated with zero initialization too.
<a href="#details">More...</a></p> <a href="#details">More...</a></p>
<table class="memberdecls"> <table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr> Functions</h2></td></tr>
<tr class="memitem:ga8c292e142110229a2980b37ab036dbc6"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__zeroinit.html#ga8c292e142110229a2980b37ab036dbc6">mi_rezalloc</a> (void *p, size_t newsize)</td></tr> <tr class="memitem:gadfd34cd7b4f2bbda7ae06367a6360756" id="r_gadfd34cd7b4f2bbda7ae06367a6360756"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gadfd34cd7b4f2bbda7ae06367a6360756">mi_rezalloc</a> (void *p, size_t newsize)</td></tr>
<tr class="separator:ga8c292e142110229a2980b37ab036dbc6"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gadfd34cd7b4f2bbda7ae06367a6360756"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacd71a7bce96aab38ae6de17af2eb2cf0"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__zeroinit.html#gacd71a7bce96aab38ae6de17af2eb2cf0">mi_rezalloc_aligned</a> (void *p, size_t newsize, size_t alignment)</td></tr> <tr class="memitem:ga4d02404fe1e7db00beb65f185e012caa" id="r_ga4d02404fe1e7db00beb65f185e012caa"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga4d02404fe1e7db00beb65f185e012caa">mi_rezalloc_aligned</a> (void *p, size_t newsize, size_t alignment)</td></tr>
<tr class="separator:gacd71a7bce96aab38ae6de17af2eb2cf0"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga4d02404fe1e7db00beb65f185e012caa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae8b358c417e61d5307da002702b0a8e1"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__zeroinit.html#gae8b358c417e61d5307da002702b0a8e1">mi_rezalloc_aligned_at</a> (void *p, size_t newsize, size_t alignment, size_t offset)</td></tr> <tr class="memitem:ga6843a88285bbfcc3bdfccc60aafd1270" id="r_ga6843a88285bbfcc3bdfccc60aafd1270"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga6843a88285bbfcc3bdfccc60aafd1270">mi_rezalloc_aligned_at</a> (void *p, size_t newsize, size_t alignment, size_t offset)</td></tr>
<tr class="separator:gae8b358c417e61d5307da002702b0a8e1"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga6843a88285bbfcc3bdfccc60aafd1270"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3e7e5c291acf1c7fd7ffd9914a9f945f"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__zeroinit.html#ga3e7e5c291acf1c7fd7ffd9914a9f945f">mi_recalloc_aligned</a> (void *p, size_t newcount, size_t size, size_t alignment)</td></tr> <tr class="memitem:ga3e2169b48683aa0ab64f813fd68d839e" id="r_ga3e2169b48683aa0ab64f813fd68d839e"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga3e2169b48683aa0ab64f813fd68d839e">mi_recalloc_aligned</a> (void *p, size_t newcount, size_t size, size_t alignment)</td></tr>
<tr class="separator:ga3e7e5c291acf1c7fd7ffd9914a9f945f"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga3e2169b48683aa0ab64f813fd68d839e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4ff5e92ad73585418a072c9d059e5cf9"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__zeroinit.html#ga4ff5e92ad73585418a072c9d059e5cf9">mi_recalloc_aligned_at</a> (void *p, size_t newcount, size_t size, size_t alignment, size_t offset)</td></tr> <tr class="memitem:gaae25e4ddedd4e0fb61b1a8bd5d452750" id="r_gaae25e4ddedd4e0fb61b1a8bd5d452750"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaae25e4ddedd4e0fb61b1a8bd5d452750">mi_recalloc_aligned_at</a> (void *p, size_t newcount, size_t size, size_t alignment, size_t offset)</td></tr>
<tr class="separator:ga4ff5e92ad73585418a072c9d059e5cf9"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gaae25e4ddedd4e0fb61b1a8bd5d452750"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacfad83f14eb5d6a42a497a898e19fc76"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__zeroinit.html#gacfad83f14eb5d6a42a497a898e19fc76">mi_heap_rezalloc</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, void *p, size_t newsize)</td></tr> <tr class="memitem:ga8d8b7ebb24b513cd84d1a696048da60d" id="r_ga8d8b7ebb24b513cd84d1a696048da60d"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga8d8b7ebb24b513cd84d1a696048da60d">mi_heap_rezalloc</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, void *p, size_t newsize)</td></tr>
<tr class="separator:gacfad83f14eb5d6a42a497a898e19fc76"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga8d8b7ebb24b513cd84d1a696048da60d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8648c5fbb22a80f0262859099f06dfbd"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__zeroinit.html#ga8648c5fbb22a80f0262859099f06dfbd">mi_heap_recalloc</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, void *p, size_t newcount, size_t size)</td></tr> <tr class="memitem:gad1a0d325d930eeb80f25e3fea37aacde" id="r_gad1a0d325d930eeb80f25e3fea37aacde"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gad1a0d325d930eeb80f25e3fea37aacde">mi_heap_recalloc</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, void *p, size_t newcount, size_t size)</td></tr>
<tr class="separator:ga8648c5fbb22a80f0262859099f06dfbd"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:gad1a0d325d930eeb80f25e3fea37aacde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga375fa8a611c51905e592d5d467c49664"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__zeroinit.html#ga375fa8a611c51905e592d5d467c49664">mi_heap_rezalloc_aligned</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, void *p, size_t newsize, size_t alignment)</td></tr> <tr class="memitem:ga5129f6dc46ee1613d918820a8a0533a7" id="r_ga5129f6dc46ee1613d918820a8a0533a7"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga5129f6dc46ee1613d918820a8a0533a7">mi_heap_rezalloc_aligned</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, void *p, size_t newsize, size_t alignment)</td></tr>
<tr class="separator:ga375fa8a611c51905e592d5d467c49664"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga5129f6dc46ee1613d918820a8a0533a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac90da54fa7e5d10bdc97ce0b51dce2eb"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__zeroinit.html#gac90da54fa7e5d10bdc97ce0b51dce2eb">mi_heap_rezalloc_aligned_at</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, void *p, size_t newsize, size_t alignment, size_t offset)</td></tr> <tr class="memitem:ga2bafa79c3f98ea74882349d44cffa5d9" id="r_ga2bafa79c3f98ea74882349d44cffa5d9"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga2bafa79c3f98ea74882349d44cffa5d9">mi_heap_rezalloc_aligned_at</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, void *p, size_t newsize, size_t alignment, size_t offset)</td></tr>
<tr class="separator:gac90da54fa7e5d10bdc97ce0b51dce2eb"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga2bafa79c3f98ea74882349d44cffa5d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9f3f999396c8f77ca5e80e7b40ac29e3"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__zeroinit.html#ga9f3f999396c8f77ca5e80e7b40ac29e3">mi_heap_recalloc_aligned</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, void *p, size_t newcount, size_t size, size_t alignment)</td></tr> <tr class="memitem:ga87ddd674bf1c67237d780d0b9e0f0f32" id="r_ga87ddd674bf1c67237d780d0b9e0f0f32"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga87ddd674bf1c67237d780d0b9e0f0f32">mi_heap_recalloc_aligned</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, void *p, size_t newcount, size_t size, size_t alignment)</td></tr>
<tr class="separator:ga9f3f999396c8f77ca5e80e7b40ac29e3"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga87ddd674bf1c67237d780d0b9e0f0f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga496452c96f1de8c500be9fddf52edaf7"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__zeroinit.html#ga496452c96f1de8c500be9fddf52edaf7">mi_heap_recalloc_aligned_at</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, void *p, size_t newcount, size_t size, size_t alignment, size_t offset)</td></tr> <tr class="memitem:ga07b5bcbaf00d0d2e598c232982588496" id="r_ga07b5bcbaf00d0d2e598c232982588496"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga07b5bcbaf00d0d2e598c232982588496">mi_heap_recalloc_aligned_at</a> (<a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *heap, void *p, size_t newcount, size_t size, size_t alignment, size_t offset)</td></tr>
<tr class="separator:ga496452c96f1de8c500be9fddf52edaf7"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:ga07b5bcbaf00d0d2e598c232982588496"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table> </table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>The zero-initialized re-allocations are only valid on memory that was originally allocated with zero initialization too. </p> <p>The zero-initialized re-allocations are only valid on memory that was originally allocated with zero initialization too. </p>
<p>e.g. <code>mi_calloc</code>, <code>mi_zalloc</code>, <code>mi_zalloc_aligned</code> etc. see <a href="https://github.com/microsoft/mimalloc/issues/63#issuecomment-508272992">https://github.com/microsoft/mimalloc/issues/63#issuecomment-508272992</a> </p> <p>e.g. <code>mi_calloc</code>, <code>mi_zalloc</code>, <code>mi_zalloc_aligned</code> etc. see <a href="https://github.com/microsoft/mimalloc/issues/63#issuecomment-508272992">https://github.com/microsoft/mimalloc/issues/63#issuecomment-508272992</a> </p>
<h2 class="groupheader">Function Documentation</h2> <h2 class="groupheader">Function Documentation</h2>
<a id="ga8648c5fbb22a80f0262859099f06dfbd"></a> <a id="gad1a0d325d930eeb80f25e3fea37aacde" name="gad1a0d325d930eeb80f25e3fea37aacde"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8648c5fbb22a80f0262859099f06dfbd">&#9670;&nbsp;</a></span>mi_heap_recalloc()</h2> <h2 class="memtitle"><span class="permalink"><a href="#gad1a0d325d930eeb80f25e3fea37aacde">&#9670;&#160;</a></span>mi_heap_recalloc()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_heap_recalloc </td> <td class="memname">void * mi_heap_recalloc </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *&#160;</td> <td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *</td> <td class="paramname"><span class="paramname"><em>heap</em></span>, </td>
<td class="paramname"><em>heap</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newcount</em></span>, </td>
<td class="paramname"><em>newcount</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>&#160;)</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga9f3f999396c8f77ca5e80e7b40ac29e3"></a> <a id="ga87ddd674bf1c67237d780d0b9e0f0f32" name="ga87ddd674bf1c67237d780d0b9e0f0f32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9f3f999396c8f77ca5e80e7b40ac29e3">&#9670;&nbsp;</a></span>mi_heap_recalloc_aligned()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga87ddd674bf1c67237d780d0b9e0f0f32">&#9670;&#160;</a></span>mi_heap_recalloc_aligned()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_heap_recalloc_aligned </td> <td class="memname">void * mi_heap_recalloc_aligned </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *&#160;</td> <td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *</td> <td class="paramname"><span class="paramname"><em>heap</em></span>, </td>
<td class="paramname"><em>heap</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newcount</em></span>, </td>
<td class="paramname"><em>newcount</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
<td class="paramname"><em>size</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>&#160;)</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga496452c96f1de8c500be9fddf52edaf7"></a> <a id="ga07b5bcbaf00d0d2e598c232982588496" name="ga07b5bcbaf00d0d2e598c232982588496"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga496452c96f1de8c500be9fddf52edaf7">&#9670;&nbsp;</a></span>mi_heap_recalloc_aligned_at()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga07b5bcbaf00d0d2e598c232982588496">&#9670;&#160;</a></span>mi_heap_recalloc_aligned_at()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_heap_recalloc_aligned_at </td> <td class="memname">void * mi_heap_recalloc_aligned_at </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *&#160;</td> <td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *</td> <td class="paramname"><span class="paramname"><em>heap</em></span>, </td>
<td class="paramname"><em>heap</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newcount</em></span>, </td>
<td class="paramname"><em>newcount</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
<td class="paramname"><em>size</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>, </td>
<td class="paramname"><em>alignment</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>offset</em></span>&#160;)</td>
<td class="paramname"><em>offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="gacfad83f14eb5d6a42a497a898e19fc76"></a> <a id="ga8d8b7ebb24b513cd84d1a696048da60d" name="ga8d8b7ebb24b513cd84d1a696048da60d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacfad83f14eb5d6a42a497a898e19fc76">&#9670;&nbsp;</a></span>mi_heap_rezalloc()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga8d8b7ebb24b513cd84d1a696048da60d">&#9670;&#160;</a></span>mi_heap_rezalloc()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_heap_rezalloc </td> <td class="memname">void * mi_heap_rezalloc </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *&#160;</td> <td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *</td> <td class="paramname"><span class="paramname"><em>heap</em></span>, </td>
<td class="paramname"><em>heap</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newsize</em></span>&#160;)</td>
<td class="paramname"><em>newsize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga375fa8a611c51905e592d5d467c49664"></a> <a id="ga5129f6dc46ee1613d918820a8a0533a7" name="ga5129f6dc46ee1613d918820a8a0533a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga375fa8a611c51905e592d5d467c49664">&#9670;&nbsp;</a></span>mi_heap_rezalloc_aligned()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga5129f6dc46ee1613d918820a8a0533a7">&#9670;&#160;</a></span>mi_heap_rezalloc_aligned()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_heap_rezalloc_aligned </td> <td class="memname">void * mi_heap_rezalloc_aligned </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *&#160;</td> <td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *</td> <td class="paramname"><span class="paramname"><em>heap</em></span>, </td>
<td class="paramname"><em>heap</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newsize</em></span>, </td>
<td class="paramname"><em>newsize</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>&#160;)</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="gac90da54fa7e5d10bdc97ce0b51dce2eb"></a> <a id="ga2bafa79c3f98ea74882349d44cffa5d9" name="ga2bafa79c3f98ea74882349d44cffa5d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac90da54fa7e5d10bdc97ce0b51dce2eb">&#9670;&nbsp;</a></span>mi_heap_rezalloc_aligned_at()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga2bafa79c3f98ea74882349d44cffa5d9">&#9670;&#160;</a></span>mi_heap_rezalloc_aligned_at()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_heap_rezalloc_aligned_at </td> <td class="memname">void * mi_heap_rezalloc_aligned_at </td>
<td>(</td> <td>(</td>
<td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *&#160;</td> <td class="paramtype"><a class="el" href="group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2">mi_heap_t</a> *</td> <td class="paramname"><span class="paramname"><em>heap</em></span>, </td>
<td class="paramname"><em>heap</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newsize</em></span>, </td>
<td class="paramname"><em>newsize</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>, </td>
<td class="paramname"><em>alignment</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>offset</em></span>&#160;)</td>
<td class="paramname"><em>offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga3e7e5c291acf1c7fd7ffd9914a9f945f"></a> <a id="ga3e2169b48683aa0ab64f813fd68d839e" name="ga3e2169b48683aa0ab64f813fd68d839e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3e7e5c291acf1c7fd7ffd9914a9f945f">&#9670;&nbsp;</a></span>mi_recalloc_aligned()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga3e2169b48683aa0ab64f813fd68d839e">&#9670;&#160;</a></span>mi_recalloc_aligned()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_recalloc_aligned </td> <td class="memname">void * mi_recalloc_aligned </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newcount</em></span>, </td>
<td class="paramname"><em>newcount</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
<td class="paramname"><em>size</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>&#160;)</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga4ff5e92ad73585418a072c9d059e5cf9"></a> <a id="gaae25e4ddedd4e0fb61b1a8bd5d452750" name="gaae25e4ddedd4e0fb61b1a8bd5d452750"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4ff5e92ad73585418a072c9d059e5cf9">&#9670;&nbsp;</a></span>mi_recalloc_aligned_at()</h2> <h2 class="memtitle"><span class="permalink"><a href="#gaae25e4ddedd4e0fb61b1a8bd5d452750">&#9670;&#160;</a></span>mi_recalloc_aligned_at()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_recalloc_aligned_at </td> <td class="memname">void * mi_recalloc_aligned_at </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newcount</em></span>, </td>
<td class="paramname"><em>newcount</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>size</em></span>, </td>
<td class="paramname"><em>size</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>, </td>
<td class="paramname"><em>alignment</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>offset</em></span>&#160;)</td>
<td class="paramname"><em>offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="ga8c292e142110229a2980b37ab036dbc6"></a> <a id="gadfd34cd7b4f2bbda7ae06367a6360756" name="gadfd34cd7b4f2bbda7ae06367a6360756"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8c292e142110229a2980b37ab036dbc6">&#9670;&nbsp;</a></span>mi_rezalloc()</h2> <h2 class="memtitle"><span class="permalink"><a href="#gadfd34cd7b4f2bbda7ae06367a6360756">&#9670;&#160;</a></span>mi_rezalloc()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_rezalloc </td> <td class="memname">void * mi_rezalloc </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newsize</em></span>&#160;)</td>
<td class="paramname"><em>newsize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="gacd71a7bce96aab38ae6de17af2eb2cf0"></a> <a id="ga4d02404fe1e7db00beb65f185e012caa" name="ga4d02404fe1e7db00beb65f185e012caa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacd71a7bce96aab38ae6de17af2eb2cf0">&#9670;&nbsp;</a></span>mi_rezalloc_aligned()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga4d02404fe1e7db00beb65f185e012caa">&#9670;&#160;</a></span>mi_rezalloc_aligned()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_rezalloc_aligned </td> <td class="memname">void * mi_rezalloc_aligned </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newsize</em></span>, </td>
<td class="paramname"><em>newsize</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>&#160;)</td>
<td class="paramname"><em>alignment</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
</div> </div>
</div> </div>
<a id="gae8b358c417e61d5307da002702b0a8e1"></a> <a id="ga6843a88285bbfcc3bdfccc60aafd1270" name="ga6843a88285bbfcc3bdfccc60aafd1270"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae8b358c417e61d5307da002702b0a8e1">&#9670;&nbsp;</a></span>mi_rezalloc_aligned_at()</h2> <h2 class="memtitle"><span class="permalink"><a href="#ga6843a88285bbfcc3bdfccc60aafd1270">&#9670;&#160;</a></span>mi_rezalloc_aligned_at()</h2>
<div class="memitem"> <div class="memitem">
<div class="memproto"> <div class="memproto">
<table class="memname"> <table class="memname">
<tr> <tr>
<td class="memname">void* mi_rezalloc_aligned_at </td> <td class="memname">void * mi_rezalloc_aligned_at </td>
<td>(</td> <td>(</td>
<td class="paramtype">void *&#160;</td> <td class="paramtype">void *</td> <td class="paramname"><span class="paramname"><em>p</em></span>, </td>
<td class="paramname"><em>p</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>newsize</em></span>, </td>
<td class="paramname"><em>newsize</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>alignment</em></span>, </td>
<td class="paramname"><em>alignment</em>, </td>
</tr> </tr>
<tr> <tr>
<td class="paramkey"></td> <td class="paramkey"></td>
<td></td> <td></td>
<td class="paramtype">size_t&#160;</td> <td class="paramtype">size_t</td> <td class="paramname"><span class="paramname"><em>offset</em></span>&#160;)</td>
<td class="paramname"><em>offset</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr> </tr>
</table> </table>
</div><div class="memdoc"> </div><div class="memdoc">
@ -584,7 +493,7 @@ Functions</h2></td></tr>
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -1,14 +1,14 @@
var group__zeroinit = var group__zeroinit =
[ [
[ "mi_heap_recalloc", "group__zeroinit.html#ga8648c5fbb22a80f0262859099f06dfbd", null ], [ "mi_heap_recalloc", "group__zeroinit.html#gad1a0d325d930eeb80f25e3fea37aacde", null ],
[ "mi_heap_recalloc_aligned", "group__zeroinit.html#ga9f3f999396c8f77ca5e80e7b40ac29e3", null ], [ "mi_heap_recalloc_aligned", "group__zeroinit.html#ga87ddd674bf1c67237d780d0b9e0f0f32", null ],
[ "mi_heap_recalloc_aligned_at", "group__zeroinit.html#ga496452c96f1de8c500be9fddf52edaf7", null ], [ "mi_heap_recalloc_aligned_at", "group__zeroinit.html#ga07b5bcbaf00d0d2e598c232982588496", null ],
[ "mi_heap_rezalloc", "group__zeroinit.html#gacfad83f14eb5d6a42a497a898e19fc76", null ], [ "mi_heap_rezalloc", "group__zeroinit.html#ga8d8b7ebb24b513cd84d1a696048da60d", null ],
[ "mi_heap_rezalloc_aligned", "group__zeroinit.html#ga375fa8a611c51905e592d5d467c49664", null ], [ "mi_heap_rezalloc_aligned", "group__zeroinit.html#ga5129f6dc46ee1613d918820a8a0533a7", null ],
[ "mi_heap_rezalloc_aligned_at", "group__zeroinit.html#gac90da54fa7e5d10bdc97ce0b51dce2eb", null ], [ "mi_heap_rezalloc_aligned_at", "group__zeroinit.html#ga2bafa79c3f98ea74882349d44cffa5d9", null ],
[ "mi_recalloc_aligned", "group__zeroinit.html#ga3e7e5c291acf1c7fd7ffd9914a9f945f", null ], [ "mi_recalloc_aligned", "group__zeroinit.html#ga3e2169b48683aa0ab64f813fd68d839e", null ],
[ "mi_recalloc_aligned_at", "group__zeroinit.html#ga4ff5e92ad73585418a072c9d059e5cf9", null ], [ "mi_recalloc_aligned_at", "group__zeroinit.html#gaae25e4ddedd4e0fb61b1a8bd5d452750", null ],
[ "mi_rezalloc", "group__zeroinit.html#ga8c292e142110229a2980b37ab036dbc6", null ], [ "mi_rezalloc", "group__zeroinit.html#gadfd34cd7b4f2bbda7ae06367a6360756", null ],
[ "mi_rezalloc_aligned", "group__zeroinit.html#gacd71a7bce96aab38ae6de17af2eb2cf0", null ], [ "mi_rezalloc_aligned", "group__zeroinit.html#ga4d02404fe1e7db00beb65f185e012caa", null ],
[ "mi_rezalloc_aligned_at", "group__zeroinit.html#gae8b358c417e61d5307da002702b0a8e1", null ] [ "mi_rezalloc_aligned_at", "group__zeroinit.html#ga6843a88285bbfcc3bdfccc60aafd1270", null ]
]; ];

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Main Page</title> <title>mi-malloc: mi-malloc</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('index.html',''); initResizable(); }); $(function(){initNavTree('index.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,28 +91,33 @@ $(document).ready(function(){initNavTree('index.html',''); initResizable(); });
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="PageDoc"><div class="header"> <div><div class="header">
<div class="headertitle"> <div class="headertitle"><div class="title">mi-malloc </div></div>
<div class="title">mi-malloc Documentation</div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<div class="textblock"><p>This is the API documentation of the <a href="https://github.com/microsoft/mimalloc">mimalloc</a> allocator (pronounced "me-malloc") &ndash; a general purpose allocator with excellent <a href="bench.html">performance</a> characteristics. Initially developed by Daan Leijen for the run-time systems of the <a href="https://github.com/koka-lang/koka">Koka</a> and <a href="https://github.com/leanprover/lean">Lean</a> languages.</p> <div class="textblock"><p>This is the API documentation of the <a href="https://github.com/microsoft/mimalloc">mimalloc</a> allocator (pronounced "me-malloc") &ndash; a general purpose allocator with excellent <a href="bench.html">performance</a> characteristics. Initially developed by Daan Leijen for the run-time systems of the <a href="https://github.com/koka-lang/koka">Koka</a> and <a href="https://github.com/leanprover/lean">Lean</a> languages.</p>
<p>It is a drop-in replacement for <code>malloc</code> and can be used in other programs without code changes, for example, on Unix you can use it as: </p><div class="fragment"><div class="line">&gt; LD_PRELOAD=/usr/bin/libmimalloc.so myprogram</div> <p>It is a drop-in replacement for <code>malloc</code> and can be used in other programs without code changes, for example, on Unix you can use it as: </p><div class="fragment"><div class="line">&gt; LD_PRELOAD=/usr/bin/libmimalloc.so myprogram</div>
</div><!-- fragment --><p>Notable aspects of the design include:</p> </div><!-- fragment --><p>Notable aspects of the design include:</p><ul>
<ul> <li><b>small and consistent</b>: the library is about 8k LOC using simple and consistent data structures. This makes it very suitable to integrate and adapt in other projects. For runtime systems it provides hooks for a monotonic <em>heartbeat</em> and deferred freeing (for bounded worst-case times with reference counting). Partly due to its simplicity, mimalloc has been ported to many systems (Windows, macOS, Linux, WASM, various BSD's, Haiku, MUSL, etc) and has excellent support for dynamic overriding. At the same time, it is an industrial strength allocator that runs (very) large scale distributed services on thousands of machines with excellent worst case latencies.</li>
<li><b>small and consistent</b>: the library is about 8k LOC using simple and consistent data structures. This makes it very suitable to integrate and adapt in other projects. For runtime systems it provides hooks for a monotonic <em>heartbeat</em> and deferred freeing (for bounded worst-case times with reference counting).</li>
<li><b>free list sharding</b>: instead of one big free list (per size class) we have many smaller lists per "mimalloc page" which reduces fragmentation and increases locality &ndash; things that are allocated close in time get allocated close in memory. (A mimalloc page contains blocks of one size class and is usually 64KiB on a 64-bit system).</li> <li><b>free list sharding</b>: instead of one big free list (per size class) we have many smaller lists per "mimalloc page" which reduces fragmentation and increases locality &ndash; things that are allocated close in time get allocated close in memory. (A mimalloc page contains blocks of one size class and is usually 64KiB on a 64-bit system).</li>
<li><b>free list multi-sharding</b>: the big idea! Not only do we shard the free list per mimalloc page, but for each page we have multiple free lists. In particular, there is one list for thread-local <code>free</code> operations, and another one for concurrent <code>free</code> operations. Free-ing from another thread can now be a single CAS without needing sophisticated coordination between threads. Since there will be thousands of separate free lists, contention is naturally distributed over the heap, and the chance of contending on a single location will be low &ndash; this is quite similar to randomized algorithms like skip lists where adding a random oracle removes the need for a more complex algorithm.</li> <li><b>free list multi-sharding</b>: the big idea! Not only do we shard the free list per mimalloc page, but for each page we have multiple free lists. In particular, there is one list for thread-local <code>free</code> operations, and another one for concurrent <code>free</code> operations. Free-ing from another thread can now be a single CAS without needing sophisticated coordination between threads. Since there will be thousands of separate free lists, contention is naturally distributed over the heap, and the chance of contending on a single location will be low &ndash; this is quite similar to randomized algorithms like skip lists where adding a random oracle removes the need for a more complex algorithm.</li>
<li><b>eager page reset</b>: when a "page" becomes empty (with increased chance due to free list sharding) the memory is marked to the OS as unused ("reset" or "purged") reducing (real) memory pressure and fragmentation, especially in long running programs.</li> <li><b>eager page purging</b>: when a "page" becomes empty (with increased chance due to free list sharding) the memory is marked to the OS as unused (reset or decommitted) reducing (real) memory pressure and fragmentation, especially in long running programs.</li>
<li><b>secure</b>: <em>mimalloc</em> can be build in secure mode, adding guard pages, randomized allocation, encrypted free lists, etc. to protect against various heap vulnerabilities. The performance penalty is only around 5% on average over our benchmarks.</li> <li><b>secure</b>: <em>mimalloc</em> can be built in secure mode, adding guard pages, randomized allocation, encrypted free lists, etc. to protect against various heap vulnerabilities. The performance penalty is usually around 10% on average over our benchmarks.</li>
<li><b>first-class heaps</b>: efficiently create and use multiple heaps to allocate across different regions. A heap can be destroyed at once instead of deallocating each object separately.</li> <li><b>first-class heaps</b>: efficiently create and use multiple heaps to allocate across different regions. A heap can be destroyed at once instead of deallocating each object separately.</li>
<li><b>bounded</b>: it does not suffer from <em>blowup</em> [1], has bounded worst-case allocation times (<em>wcat</em>), bounded space overhead (~0.2% meta-data, with at most 12.5% waste in allocation sizes), and has no internal points of contention using only atomic operations.</li> <li><b>bounded</b>: it does not suffer from <em>blowup</em> [1], has bounded worst-case allocation times (<em>wcat</em>) (upto OS primitives), bounded space overhead (~0.2% meta-data, with low internal fragmentation), and has no internal points of contention using only atomic operations.</li>
<li><b>fast</b>: In our benchmarks (see <a href="#performance">below</a>), <em>mimalloc</em> outperforms all other leading allocators (<em>jemalloc</em>, <em>tcmalloc</em>, <em>Hoard</em>, etc), and usually uses less memory (up to 25% more in the worst case). A nice property is that it does consistently well over a wide range of benchmarks.</li> <li><b>fast</b>: In our benchmarks (see <a class="el" href="bench.html">below</a>), <em>mimalloc</em> outperforms other leading allocators (<em>jemalloc</em>, <em>tcmalloc</em>, <em>Hoard</em>, etc), and often uses less memory. A nice property is that it does consistently well over a wide range of benchmarks. There is also good huge OS page support for larger server programs.</li>
</ul> </ul>
<p>You can read more on the design of <em>mimalloc</em> in the <a href="https://www.microsoft.com/en-us/research/publication/mimalloc-free-list-sharding-in-action">technical report</a> which also has detailed benchmark results.</p> <p>You can read more on the design of <em>mimalloc</em> in the <a href="https://www.microsoft.com/en-us/research/publication/mimalloc-free-list-sharding-in-action">technical report</a> which also has detailed benchmark results.</p>
<p>Further information:</p> <p>Further information:</p>
@ -130,12 +138,13 @@ $(document).ready(function(){initNavTree('index.html',''); initResizable(); });
<li><a class="el" href="group__cpp.html">C++ wrappers</a> </li> <li><a class="el" href="group__cpp.html">C++ wrappers</a> </li>
</ul> </ul>
</div></div><!-- PageDoc --> </div></div><!-- PageDoc -->
<a href="doxygen_crawl.html"></a>
</div><!-- contents --> </div><!-- contents -->
</div><!-- doc-content --> </div><!-- doc-content -->
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

197
docs/jquery.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -47,3 +47,14 @@ div.fragment {
#nav-sync img { #nav-sync img {
display: none; display: none;
} }
h1,h2,h3,h4,h5,h6 {
transition:none;
}
.memtitle {
background-image: none;
background-color: #EEE;
}
table.memproto, .memproto {
text-shadow: none;
font-size: 110%;
}

View file

@ -22,10 +22,15 @@
#nav-tree .selected { #nav-tree .selected {
background-image: url('tab_a.png'); background-image: url('tab_a.png');
background-repeat:repeat-x; background-repeat:repeat-x;
color: #fff; color: white;
text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
} }
#nav-tree .selected .arrow {
color: #5B6364;
text-shadow: none;
}
#nav-tree img { #nav-tree img {
margin:0px; margin:0px;
padding:0px; padding:0px;
@ -37,7 +42,6 @@
text-decoration:none; text-decoration:none;
padding:0px; padding:0px;
margin:0px; margin:0px;
outline:none;
} }
#nav-tree .label { #nav-tree .label {
@ -52,7 +56,7 @@
#nav-tree .selected a { #nav-tree .selected a {
text-decoration:none; text-decoration:none;
color:#fff; color:white;
} }
#nav-tree .children_ul { #nav-tree .children_ul {
@ -67,7 +71,6 @@
#nav-tree { #nav-tree {
padding: 0px 0px; padding: 0px 0px;
background-color: #FAFAFF;
font-size:14px; font-size:14px;
overflow:auto; overflow:auto;
} }
@ -86,7 +89,8 @@
display:block; display:block;
position: absolute; position: absolute;
left: 0px; left: 0px;
width: 180px; width: $width;
overflow : hidden;
} }
.ui-resizable .ui-resizable-handle { .ui-resizable .ui-resizable-handle {
@ -94,7 +98,7 @@
} }
.ui-resizable-e { .ui-resizable-e {
background-image:url("splitbar.png"); background-image:url('splitbar.png');
background-size:100%; background-size:100%;
background-repeat:repeat-y; background-repeat:repeat-y;
background-attachment: scroll; background-attachment: scroll;
@ -117,7 +121,6 @@
} }
#nav-tree { #nav-tree {
background-image:url('nav_h.png');
background-repeat:repeat-x; background-repeat:repeat-x;
background-color: #F2F3F3; background-color: #F2F3F3;
-webkit-overflow-scrolling : touch; /* iOS 5+ */ -webkit-overflow-scrolling : touch; /* iOS 5+ */
@ -143,3 +146,4 @@
#nav-tree { display: none; } #nav-tree { display: none; }
div.ui-resizable-handle { display: none; position: relative; } div.ui-resizable-handle { display: none; position: relative; }
} }

View file

@ -22,525 +22,462 @@
@licend The above is the entire license notice for the JavaScript code in this file @licend The above is the entire license notice for the JavaScript code in this file
*/ */
var navTreeSubIndices = new Array();
var arrowDown = '&#9660;';
var arrowRight = '&#9658;';
function getData(varName) function initNavTree(toroot,relpath) {
{ let navTreeSubIndices = [];
var i = varName.lastIndexOf('/'); const ARROW_DOWN = '&#9660;';
var n = i>=0 ? varName.substring(i+1) : varName; const ARROW_RIGHT = '&#9658;';
return eval(n.replace(/\-/g,'_')); const NAVPATH_COOKIE_NAME = ''+'navpath';
}
function stripPath(uri) const getData = function(varName) {
{ const i = varName.lastIndexOf('/');
return uri.substring(uri.lastIndexOf('/')+1); const n = i>=0 ? varName.substring(i+1) : varName;
} return eval(n.replace(/-/g,'_'));
function stripPath2(uri)
{
var i = uri.lastIndexOf('/');
var s = uri.substring(i+1);
var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/);
return m ? uri.substring(i-6) : s;
}
function hashValue()
{
return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,'');
}
function hashUrl()
{
return '#'+hashValue();
}
function pathName()
{
return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, '');
}
function localStorageSupported()
{
try {
return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem;
} }
catch(e) {
return false; const stripPath = function(uri) {
return uri.substring(uri.lastIndexOf('/')+1);
} }
}
function storeLink(link) const stripPath2 = function(uri) {
{ const i = uri.lastIndexOf('/');
if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { const s = uri.substring(i+1);
window.localStorage.setItem('navpath',link); const m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/);
return m ? uri.substring(i-6) : s;
} }
}
function deleteLink() const hashValue = function() {
{ return $(location).attr('hash').substring(1).replace(/[^\w-]/g,'');
if (localStorageSupported()) {
window.localStorage.setItem('navpath','');
} }
}
function cachedLink() const hashUrl = function() {
{ return '#'+hashValue();
if (localStorageSupported()) {
return window.localStorage.getItem('navpath');
} else {
return '';
} }
}
function getScript(scriptName,func,show) const pathName = function() {
{ return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;()]/g, '');
var head = document.getElementsByTagName("head")[0]; }
var script = document.createElement('script');
script.id = scriptName;
script.type = 'text/javascript';
script.onload = func;
script.src = scriptName+'.js';
head.appendChild(script);
}
function createIndent(o,domNode,node,level) const storeLink = function(link) {
{ if (!$("#nav-sync").hasClass('sync')) {
var level=-1; Cookie.writeSetting(NAVPATH_COOKIE_NAME,link,0);
var n = node;
while (n.parentNode) { level++; n=n.parentNode; }
if (node.childrenData) {
var imgNode = document.createElement("span");
imgNode.className = 'arrow';
imgNode.style.paddingLeft=(16*level).toString()+'px';
imgNode.innerHTML=arrowRight;
node.plus_img = imgNode;
node.expandToggle = document.createElement("a");
node.expandToggle.href = "javascript:void(0)";
node.expandToggle.onclick = function() {
if (node.expanded) {
$(node.getChildrenUL()).slideUp("fast");
node.plus_img.innerHTML=arrowRight;
node.expanded = false;
} else {
expandNode(o, node, false, false);
}
} }
node.expandToggle.appendChild(imgNode);
domNode.appendChild(node.expandToggle);
} else {
var span = document.createElement("span");
span.className = 'arrow';
span.style.width = 16*(level+1)+'px';
span.innerHTML = '&#160;';
domNode.appendChild(span);
} }
}
var animationInProgress = false; const deleteLink = function() {
Cookie.eraseSetting(NAVPATH_COOKIE_NAME);
function gotoAnchor(anchor,aname,updateLocation)
{
var pos, docContent = $('#doc-content');
var ancParent = $(anchor.parent());
if (ancParent.hasClass('memItemLeft') ||
ancParent.hasClass('memtitle') ||
ancParent.hasClass('fieldname') ||
ancParent.hasClass('fieldtype') ||
ancParent.is(':header'))
{
pos = ancParent.position().top;
} else if (anchor.position()) {
pos = anchor.position().top;
} }
if (pos) {
var dist = Math.abs(Math.min( const cachedLink = function() {
pos-docContent.offset().top, return Cookie.readSetting(NAVPATH_COOKIE_NAME,'');
docContent[0].scrollHeight-
docContent.height()-docContent.scrollTop()));
animationInProgress=true;
docContent.animate({
scrollTop: pos + docContent.scrollTop() - docContent.offset().top
},Math.max(50,Math.min(500,dist)),function(){
if (updateLocation) window.location.href=aname;
animationInProgress=false;
});
} }
}
function newNode(o, po, text, link, childrenData, lastNode) const getScript = function(scriptName,func) {
{ const head = document.getElementsByTagName("head")[0];
var node = new Object(); const script = document.createElement('script');
node.children = Array(); script.id = scriptName;
node.childrenData = childrenData; script.type = 'text/javascript';
node.depth = po.depth + 1; script.onload = func;
node.relpath = po.relpath; script.src = scriptName+'.js';
node.isLast = lastNode; head.appendChild(script);
}
node.li = document.createElement("li"); const createIndent = function(o,domNode,node) {
po.getChildrenUL().appendChild(node.li); let level=-1;
node.parentNode = po; let n = node;
while (n.parentNode) { level++; n=n.parentNode; }
node.itemDiv = document.createElement("div"); if (node.childrenData) {
node.itemDiv.className = "item"; const imgNode = document.createElement("span");
imgNode.className = 'arrow';
node.labelSpan = document.createElement("span"); imgNode.style.paddingLeft=(16*level).toString()+'px';
node.labelSpan.className = "label"; imgNode.innerHTML=ARROW_RIGHT;
node.plus_img = imgNode;
createIndent(o,node.itemDiv,node,0); node.expandToggle = document.createElement("a");
node.itemDiv.appendChild(node.labelSpan); node.expandToggle.href = "javascript:void(0)";
node.li.appendChild(node.itemDiv); node.expandToggle.onclick = function() {
if (node.expanded) {
var a = document.createElement("a"); $(node.getChildrenUL()).slideUp("fast");
node.labelSpan.appendChild(a); node.plus_img.innerHTML=ARROW_RIGHT;
node.label = document.createTextNode(text); node.expanded = false;
node.expanded = false; } else {
a.appendChild(node.label); expandNode(o, node, false, true);
if (link) {
var url;
if (link.substring(0,1)=='^') {
url = link.substring(1);
link = url;
} else {
url = node.relpath+link;
}
a.className = stripPath(link.replace('#',':'));
if (link.indexOf('#')!=-1) {
var aname = '#'+link.split('#')[1];
var srcPage = stripPath(pathName());
var targetPage = stripPath(link.split('#')[0]);
a.href = srcPage!=targetPage ? url : "javascript:void(0)";
a.onclick = function(){
storeLink(link);
if (!$(a).parent().parent().hasClass('selected'))
{
$('.item').removeClass('selected');
$('.item').removeAttr('id');
$(a).parent().parent().addClass('selected');
$(a).parent().parent().attr('id','selected');
} }
var anchor = $(aname); }
gotoAnchor(anchor,aname,true); node.expandToggle.appendChild(imgNode);
}; domNode.appendChild(node.expandToggle);
} else { } else {
a.href = url; let span = document.createElement("span");
a.onclick = function() { storeLink(link); } span.className = 'arrow';
span.style.width = 16*(level+1)+'px';
span.innerHTML = '&#160;';
domNode.appendChild(span);
} }
} else { }
if (childrenData != null)
{ let animationInProgress = false;
const gotoAnchor = function(anchor,aname) {
let pos, docContent = $('#doc-content');
let ancParent = $(anchor.parent());
if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle') ||
ancParent.hasClass('fieldname') || ancParent.hasClass('fieldtype') ||
ancParent.is(':header')) {
pos = ancParent.offset().top;
} else if (anchor.position()) {
pos = anchor.offset().top;
}
if (pos) {
const dcOffset = docContent.offset().top;
const dcHeight = docContent.height();
const dcScrHeight = docContent[0].scrollHeight
const dcScrTop = docContent.scrollTop();
let dist = Math.abs(Math.min(pos-dcOffset,dcScrHeight-dcHeight-dcScrTop));
animationInProgress = true;
docContent.animate({
scrollTop: pos + dcScrTop - dcOffset
},Math.max(50,Math.min(500,dist)),function() {
animationInProgress=false;
if (anchor.parent().attr('class')=='memItemLeft') {
let rows = $('.memberdecls tr[class$="'+hashValue()+'"]');
glowEffect(rows.children(),300); // member without details
} else if (anchor.parent().attr('class')=='fieldname') {
glowEffect(anchor.parent().parent(),1000); // enum value
} else if (anchor.parent().attr('class')=='fieldtype') {
glowEffect(anchor.parent().parent(),1000); // struct field
} else if (anchor.parent().is(":header")) {
glowEffect(anchor.parent(),1000); // section header
} else {
glowEffect(anchor.next(),1000); // normal member
}
});
}
}
const newNode = function(o, po, text, link, childrenData, lastNode) {
const node = {
children : [],
childrenData : childrenData,
depth : po.depth + 1,
relpath : po.relpath,
isLast : lastNode,
li : document.createElement("li"),
parentNode : po,
itemDiv : document.createElement("div"),
labelSpan : document.createElement("span"),
label : document.createTextNode(text),
expanded : false,
childrenUL : null,
getChildrenUL : function() {
if (!this.childrenUL) {
this.childrenUL = document.createElement("ul");
this.childrenUL.className = "children_ul";
this.childrenUL.style.display = "none";
this.li.appendChild(node.childrenUL);
}
return node.childrenUL;
},
};
node.itemDiv.className = "item";
node.labelSpan.className = "label";
createIndent(o,node.itemDiv,node);
node.itemDiv.appendChild(node.labelSpan);
node.li.appendChild(node.itemDiv);
const a = document.createElement("a");
node.labelSpan.appendChild(a);
po.getChildrenUL().appendChild(node.li);
a.appendChild(node.label);
if (link) {
let url;
if (link.substring(0,1)=='^') {
url = link.substring(1);
link = url;
} else {
url = node.relpath+link;
}
a.className = stripPath(link.replace('#',':'));
if (link.indexOf('#')!=-1) {
const aname = '#'+link.split('#')[1];
const srcPage = stripPath(pathName());
const targetPage = stripPath(link.split('#')[0]);
a.href = srcPage!=targetPage ? url : aname;
a.onclick = function() {
storeLink(link);
aPPar = $(a).parent().parent();
if (!aPPar.hasClass('selected')) {
$('.item').removeClass('selected');
$('.item').removeAttr('id');
aPPar.addClass('selected');
aPPar.attr('id','selected');
}
const anchor = $(aname);
gotoAnchor(anchor,aname);
};
} else {
a.href = url;
a.onclick = () => storeLink(link);
}
} else if (childrenData != null) {
a.className = "nolink"; a.className = "nolink";
a.href = "javascript:void(0)"; a.href = "javascript:void(0)";
a.onclick = node.expandToggle.onclick; a.onclick = node.expandToggle.onclick;
} }
return node;
} }
node.childrenUL = null; const showRoot = function() {
node.getChildrenUL = function() { const headerHeight = $("#top").height();
if (!node.childrenUL) { const footerHeight = $("#nav-path").height();
node.childrenUL = document.createElement("ul"); const windowHeight = $(window).height() - headerHeight - footerHeight;
node.childrenUL.className = "children_ul"; (function() { // retry until we can scroll to the selected item
node.childrenUL.style.display = "none"; try {
node.li.appendChild(node.childrenUL); const navtree=$('#nav-tree');
} navtree.scrollTo('#selected',100,{offset:-windowHeight/2});
return node.childrenUL; } catch (err) {
}; setTimeout(arguments.callee, 0);
return node;
}
function showRoot()
{
var headerHeight = $("#top").height();
var footerHeight = $("#nav-path").height();
var windowHeight = $(window).height() - headerHeight - footerHeight;
(function (){ // retry until we can scroll to the selected item
try {
var navtree=$('#nav-tree');
navtree.scrollTo('#selected',100,{offset:-windowHeight/2});
} catch (err) {
setTimeout(arguments.callee, 0);
}
})();
}
function expandNode(o, node, imm, showRoot)
{
if (node.childrenData && !node.expanded) {
if (typeof(node.childrenData)==='string') {
var varName = node.childrenData;
getScript(node.relpath+varName,function(){
node.childrenData = getData(varName);
expandNode(o, node, imm, showRoot);
}, showRoot);
} else {
if (!node.childrenVisited) {
getNode(o, node);
} }
$(node.getChildrenUL()).slideDown("fast"); })();
node.plus_img.innerHTML = arrowDown;
node.expanded = true;
}
} }
}
function glowEffect(n,duration) const expandNode = function(o, node, imm, setFocus) {
{ if (node.childrenData && !node.expanded) {
n.addClass('glow').delay(duration).queue(function(next){ if (typeof(node.childrenData)==='string') {
$(this).removeClass('glow');next(); const varName = node.childrenData;
}); getScript(node.relpath+varName,function() {
} node.childrenData = getData(varName);
expandNode(o, node, imm, setFocus);
function highlightAnchor() });
{
var aname = hashUrl();
var anchor = $(aname);
if (anchor.parent().attr('class')=='memItemLeft'){
var rows = $('.memberdecls tr[class$="'+hashValue()+'"]');
glowEffect(rows.children(),300); // member without details
} else if (anchor.parent().attr('class')=='fieldname'){
glowEffect(anchor.parent().parent(),1000); // enum value
} else if (anchor.parent().attr('class')=='fieldtype'){
glowEffect(anchor.parent().parent(),1000); // struct field
} else if (anchor.parent().is(":header")) {
glowEffect(anchor.parent(),1000); // section header
} else {
glowEffect(anchor.next(),1000); // normal member
}
}
function selectAndHighlight(hash,n)
{
var a;
if (hash) {
var link=stripPath(pathName())+':'+hash.substring(1);
a=$('.item a[class$="'+link+'"]');
}
if (a && a.length) {
a.parent().parent().addClass('selected');
a.parent().parent().attr('id','selected');
highlightAnchor();
} else if (n) {
$(n.itemDiv).addClass('selected');
$(n.itemDiv).attr('id','selected');
}
if ($('#nav-tree-contents .item:first').hasClass('selected')) {
$('#nav-sync').css('top','30px');
} else {
$('#nav-sync').css('top','5px');
}
showRoot();
}
function showNode(o, node, index, hash)
{
if (node && node.childrenData) {
if (typeof(node.childrenData)==='string') {
var varName = node.childrenData;
getScript(node.relpath+varName,function(){
node.childrenData = getData(varName);
showNode(o,node,index,hash);
},true);
} else {
if (!node.childrenVisited) {
getNode(o, node);
}
$(node.getChildrenUL()).css({'display':'block'});
node.plus_img.innerHTML = arrowDown;
node.expanded = true;
var n = node.children[o.breadcrumbs[index]];
if (index+1<o.breadcrumbs.length) {
showNode(o,n,index+1,hash);
} else { } else {
if (typeof(n.childrenData)==='string') { if (!node.childrenVisited) {
var varName = n.childrenData; getNode(o, node);
getScript(n.relpath+varName,function(){ }
$(node.getChildrenUL()).slideDown("fast");
node.plus_img.innerHTML = ARROW_DOWN;
node.expanded = true;
if (setFocus) {
$(node.expandToggle).focus();
}
}
}
}
const glowEffect = function(n,duration) {
n.addClass('glow').delay(duration).queue(function(next) {
$(this).removeClass('glow');next();
});
}
const highlightAnchor = function() {
const aname = hashUrl();
const anchor = $(aname);
gotoAnchor(anchor,aname);
}
const selectAndHighlight = function(hash,n) {
let a;
if (hash) {
const link=stripPath(pathName())+':'+hash.substring(1);
a=$('.item a[class$="'+link+'"]');
}
if (a && a.length) {
a.parent().parent().addClass('selected');
a.parent().parent().attr('id','selected');
highlightAnchor();
} else if (n) {
$(n.itemDiv).addClass('selected');
$(n.itemDiv).attr('id','selected');
}
let topOffset=5;
if ($('#nav-tree-contents .item:first').hasClass('selected')) {
topOffset+=25;
}
$('#nav-sync').css('top',topOffset+'px');
showRoot();
}
const showNode = function(o, node, index, hash) {
if (node && node.childrenData) {
if (typeof(node.childrenData)==='string') {
const varName = node.childrenData;
getScript(node.relpath+varName,function() {
node.childrenData = getData(varName);
showNode(o,node,index,hash);
});
} else {
if (!node.childrenVisited) {
getNode(o, node);
}
$(node.getChildrenUL()).css({'display':'block'});
node.plus_img.innerHTML = ARROW_DOWN;
node.expanded = true;
const n = node.children[o.breadcrumbs[index]];
if (index+1<o.breadcrumbs.length) {
showNode(o,n,index+1,hash);
} else if (typeof(n.childrenData)==='string') {
const varName = n.childrenData;
getScript(n.relpath+varName,function() {
n.childrenData = getData(varName); n.childrenData = getData(varName);
node.expanded=false; node.expanded=false;
showNode(o,node,index,hash); // retry with child node expanded showNode(o,node,index,hash); // retry with child node expanded
},true); });
} else { } else {
var rootBase = stripPath(o.toroot.replace(/\..+$/, '')); const rootBase = stripPath(o.toroot.replace(/\..+$/, ''));
if (rootBase=="index" || rootBase=="pages" || rootBase=="search") { if (rootBase=="index" || rootBase=="pages" || rootBase=="search") {
expandNode(o, n, true, true); expandNode(o, n, true, false);
} }
selectAndHighlight(hash,n); selectAndHighlight(hash,n);
} }
} }
}
} else {
selectAndHighlight(hash);
}
}
function removeToInsertLater(element) {
var parentNode = element.parentNode;
var nextSibling = element.nextSibling;
parentNode.removeChild(element);
return function() {
if (nextSibling) {
parentNode.insertBefore(element, nextSibling);
} else { } else {
parentNode.appendChild(element); selectAndHighlight(hash);
} }
}; }
}
function getNode(o, po) const removeToInsertLater = function(element) {
{ const parentNode = element.parentNode;
var insertFunction = removeToInsertLater(po.li); const nextSibling = element.nextSibling;
po.childrenVisited = true; parentNode.removeChild(element);
var l = po.childrenData.length-1; return function() {
for (var i in po.childrenData) { if (nextSibling) {
var nodeData = po.childrenData[i]; parentNode.insertBefore(element, nextSibling);
po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2], } else {
i==l); parentNode.appendChild(element);
}
insertFunction();
}
function gotoNode(o,subIndex,root,hash,relpath)
{
var nti = navTreeSubIndices[subIndex][root+hash];
o.breadcrumbs = $.extend(true, [], nti ? nti : navTreeSubIndices[subIndex][root]);
if (!o.breadcrumbs && root!=NAVTREE[0][1]) { // fallback: show index
navTo(o,NAVTREE[0][1],"",relpath);
$('.item').removeClass('selected');
$('.item').removeAttr('id');
}
if (o.breadcrumbs) {
o.breadcrumbs.unshift(0); // add 0 for root node
showNode(o, o.node, 0, hash);
}
}
function navTo(o,root,hash,relpath)
{
var link = cachedLink();
if (link) {
var parts = link.split('#');
root = parts[0];
if (parts.length>1) hash = '#'+parts[1].replace(/[^\w\-]/g,'');
else hash='';
}
if (hash.match(/^#l\d+$/)) {
var anchor=$('a[name='+hash.substring(1)+']');
glowEffect(anchor.parent(),1000); // line number
hash=''; // strip line number anchors
}
var url=root+hash;
var i=-1;
while (NAVTREEINDEX[i+1]<=url) i++;
if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index
if (navTreeSubIndices[i]) {
gotoNode(o,i,root,hash,relpath)
} else {
getScript(relpath+'navtreeindex'+i,function(){
navTreeSubIndices[i] = eval('NAVTREEINDEX'+i);
if (navTreeSubIndices[i]) {
gotoNode(o,i,root,hash,relpath);
} }
},true); };
} }
}
function showSyncOff(n,relpath) const getNode = function(o, po) {
{ const insertFunction = removeToInsertLater(po.li);
n.html('<img src="'+relpath+'sync_off.png" title="'+SYNCOFFMSG+'"/>'); po.childrenVisited = true;
} const l = po.childrenData.length-1;
for (let i in po.childrenData) {
function showSyncOn(n,relpath) const nodeData = po.childrenData[i];
{ po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2], i==l);
n.html('<img src="'+relpath+'sync_on.png" title="'+SYNCONMSG+'"/>');
}
function toggleSyncButton(relpath)
{
var navSync = $('#nav-sync');
if (navSync.hasClass('sync')) {
navSync.removeClass('sync');
showSyncOff(navSync,relpath);
storeLink(stripPath2(pathName())+hashUrl());
} else {
navSync.addClass('sync');
showSyncOn(navSync,relpath);
deleteLink();
}
}
var loadTriggered = false;
var readyTriggered = false;
var loadObject,loadToRoot,loadUrl,loadRelPath;
$(window).on('load',function(){
if (readyTriggered) { // ready first
navTo(loadObject,loadToRoot,loadUrl,loadRelPath);
showRoot();
}
loadTriggered=true;
});
function initNavTree(toroot,relpath)
{
var o = new Object();
o.toroot = toroot;
o.node = new Object();
o.node.li = document.getElementById("nav-tree-contents");
o.node.childrenData = NAVTREE;
o.node.children = new Array();
o.node.childrenUL = document.createElement("ul");
o.node.getChildrenUL = function() { return o.node.childrenUL; };
o.node.li.appendChild(o.node.childrenUL);
o.node.depth = 0;
o.node.relpath = relpath;
o.node.expanded = false;
o.node.isLast = true;
o.node.plus_img = document.createElement("span");
o.node.plus_img.className = 'arrow';
o.node.plus_img.innerHTML = arrowRight;
if (localStorageSupported()) {
var navSync = $('#nav-sync');
if (cachedLink()) {
showSyncOff(navSync,relpath);
navSync.removeClass('sync');
} else {
showSyncOn(navSync,relpath);
} }
navSync.click(function(){ toggleSyncButton(relpath); }); insertFunction();
} }
if (loadTriggered) { // load before ready const gotoNode = function(o,subIndex,root,hash,relpath) {
navTo(o,toroot,hashUrl(),relpath); const nti = navTreeSubIndices[subIndex][root+hash];
showRoot(); o.breadcrumbs = $.extend(true, [], nti ? nti : navTreeSubIndices[subIndex][root]);
} else { // ready before load if (!o.breadcrumbs && root!=NAVTREE[0][1]) { // fallback: show index
loadObject = o; navTo(o,NAVTREE[0][1],"",relpath);
loadToRoot = toroot; $('.item').removeClass('selected');
loadUrl = hashUrl(); $('.item').removeAttr('id');
loadRelPath = relpath; }
readyTriggered=true; if (o.breadcrumbs) {
o.breadcrumbs.unshift(0); // add 0 for root node
showNode(o, o.node, 0, hash);
}
} }
$(window).bind('hashchange', function(){ const navTo = function(o,root,hash,relpath) {
if (window.location.hash && window.location.hash.length>1){ const link = cachedLink();
var a; if (link) {
if ($(location).attr('hash')){ const parts = link.split('#');
var clslink=stripPath(pathName())+':'+hashValue(); root = parts[0];
a=$('.item a[class$="'+clslink.replace(/</g,'\\3c ')+'"]'); hash = parts.length>1 ? '#'+parts[1].replace(/[^\w-]/g,'') : '';
} }
if (a==null || !$(a).parent().parent().hasClass('selected')){ if (hash.match(/^#l\d+$/)) {
$('.item').removeClass('selected'); const anchor=$('a[name='+hash.substring(1)+']');
$('.item').removeAttr('id'); glowEffect(anchor.parent(),1000); // line number
} hash=''; // strip line number anchors
var link=stripPath2(pathName()); }
navTo(o,link,hashUrl(),relpath); const url=root+hash;
} else if (!animationInProgress) { let i=-1;
$('#doc-content').scrollTop(0); while (NAVTREEINDEX[i+1]<=url) i++;
$('.item').removeClass('selected'); if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index
$('.item').removeAttr('id'); if (navTreeSubIndices[i]) {
navTo(o,toroot,hashUrl(),relpath); gotoNode(o,i,root,hash,relpath)
} } else {
}) getScript(relpath+'navtreeindex'+i,function() {
navTreeSubIndices[i] = eval('NAVTREEINDEX'+i);
if (navTreeSubIndices[i]) {
gotoNode(o,i,root,hash,relpath);
}
});
}
}
const showSyncOff = function(n,relpath) {
n.html('<img src="'+relpath+'sync_off.png" title="'+SYNCOFFMSG+'"/>');
}
const showSyncOn = function(n,relpath) {
n.html('<img src="'+relpath+'sync_on.png" title="'+SYNCONMSG+'"/>');
}
const o = {
toroot : toroot,
node : {
childrenData : NAVTREE,
children : [],
childrenUL : document.createElement("ul"),
getChildrenUL : function() { return this.childrenUL },
li : document.getElementById("nav-tree-contents"),
depth : 0,
relpath : relpath,
expanded : false,
isLast : true,
plus_img : document.createElement("span"),
},
};
o.node.li.appendChild(o.node.childrenUL);
o.node.plus_img.className = 'arrow';
o.node.plus_img.innerHTML = ARROW_RIGHT;
const navSync = $('#nav-sync');
if (cachedLink()) {
showSyncOff(navSync,relpath);
navSync.removeClass('sync');
} else {
showSyncOn(navSync,relpath);
}
navSync.click(() => {
const navSync = $('#nav-sync');
if (navSync.hasClass('sync')) {
navSync.removeClass('sync');
showSyncOff(navSync,relpath);
storeLink(stripPath2(pathName())+hashUrl());
} else {
navSync.addClass('sync');
showSyncOn(navSync,relpath);
deleteLink();
}
});
navTo(o,toroot,hashUrl(),relpath);
showRoot();
$(window).bind('hashchange', () => {
if (!animationInProgress) {
if (window.location.hash && window.location.hash.length>1) {
let a;
if ($(location).attr('hash')) {
const clslink=stripPath(pathName())+':'+hashValue();
a=$('.item a[class$="'+clslink.replace(/</g,'\\3c ')+'"]');
}
if (a==null || !$(a).parent().parent().hasClass('selected')) {
$('.item').removeClass('selected');
$('.item').removeAttr('id');
}
const link=stripPath2(pathName());
navTo(o,link,hashUrl(),relpath);
} else {
$('#doc-content').scrollTop(0);
$('.item').removeClass('selected');
$('.item').removeAttr('id');
navTo(o,toroot,hashUrl(),relpath);
}
}
});
$("div.toc a[href]").click(function(e) {
e.preventDefault();
const aname = $(this).attr("href");
gotoAnchor($(aname),aname);
});
} }
/* @license-end */ /* @license-end */

View file

@ -30,7 +30,7 @@ var NAVTREE =
[ "Environment Options", "environment.html", null ], [ "Environment Options", "environment.html", null ],
[ "Overriding Malloc", "overrides.html", null ], [ "Overriding Malloc", "overrides.html", null ],
[ "Performance", "bench.html", null ], [ "Performance", "bench.html", null ],
[ "Modules", "modules.html", "modules" ], [ "Topics", "topics.html", "topics" ],
[ "Data Structures", "annotated.html", [ [ "Data Structures", "annotated.html", [
[ "Data Structures", "annotated.html", "annotated_dup" ], [ "Data Structures", "annotated.html", "annotated_dup" ],
[ "Data Structure Index", "classes.html", null ], [ "Data Structure Index", "classes.html", null ],
@ -47,5 +47,5 @@ var NAVTREEINDEX =
"annotated.html" "annotated.html"
]; ];
var SYNCONMSG = 'click to disable panel synchronisation'; var SYNCONMSG = 'click to disable panel synchronization';
var SYNCOFFMSG = 'click to enable panel synchronisation'; var SYNCOFFMSG = 'click to enable panel synchronization';

View file

@ -8,147 +8,184 @@ var NAVTREEINDEX0 =
"functions.html":[6,2,0], "functions.html":[6,2,0],
"functions_vars.html":[6,2,1], "functions_vars.html":[6,2,1],
"group__aligned.html":[5,2], "group__aligned.html":[5,2],
"group__aligned.html#ga08647c4593f3b2eef24a919a73eba3a3":[5,2,2], "group__aligned.html#ga2022f71b95a7cd6cce1b6e07752ae8ca":[5,2,3],
"group__aligned.html#ga0cadbcf5b89a7b6fb171bc8df8734819":[5,2,7], "group__aligned.html#ga424ef386fb1f9f8e0a86ab53f16eaaf1":[5,2,0],
"group__aligned.html#ga4028d1cf4aa4c87c880747044a8322ae":[5,2,5], "group__aligned.html#ga5d7a46d054b4d7abe9d8d2474add2edf":[5,2,4],
"group__aligned.html#ga53dddb4724042a90315b94bc268fb4c9":[5,2,1], "group__aligned.html#ga69578ff1a98ca16e1dcd02c0995cd65c":[5,2,2],
"group__aligned.html#ga5850da130c936bd77db039dcfbc8295d":[5,2,4], "group__aligned.html#ga7c1778805ce50ebbf02ccbd5e39d5dba":[5,2,7],
"group__aligned.html#ga5f8c2353766db522565e642fafd8a3f8":[5,2,8], "group__aligned.html#ga977f96bd2c5c141bcd70e6685c90d6c3":[5,2,1],
"group__aligned.html#ga68930196751fa2cca9e1fd0d71bade56":[5,2,3], "group__aligned.html#gaac7d0beb782f9b9ac31f47492b130f82":[5,2,6],
"group__aligned.html#ga83c03016066b438f51a8095e9140be06":[5,2,0], "group__aligned.html#gad06dcf2bb8faadb2c8ea61ee5d24bbf6":[5,2,5],
"group__aligned.html#gaf66a9ae6c6f08bd6be6fb6ea771faffb":[5,2,6],
"group__analysis.html":[5,6], "group__analysis.html":[5,6],
"group__analysis.html#a2b7a0c92ece8daf46b558efc990ebdc1":[5,6,0,4],
"group__analysis.html#a332a6c14d736a99699d5453a1cb04b41":[5,6,0,0], "group__analysis.html#a332a6c14d736a99699d5453a1cb04b41":[5,6,0,0],
"group__analysis.html#ab47526df656d8837ec3e97f11b83f835":[5,6,0,2], "group__analysis.html#ab47526df656d8837ec3e97f11b83f835":[5,6,0,2],
"group__analysis.html#ab820302c5cd0df133eb8e51650a008b4":[5,6,0,4], "group__analysis.html#ab53664e31d7fe2564f8d42041ef75cb3":[5,6,0,3],
"group__analysis.html#ab820302c5cd0df133eb8e51650a008b4":[5,6,0,6],
"group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8":[5,6,0,1], "group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8":[5,6,0,1],
"group__analysis.html#ae848a3e6840414891035423948ca0383":[5,6,0,3], "group__analysis.html#ae848a3e6840414891035423948ca0383":[5,6,0,5],
"group__analysis.html#ga0d67c1789faaa15ff366c024fcaf6377":[5,6,3], "group__analysis.html#ga0d67c1789faaa15ff366c024fcaf6377":[5,6,4],
"group__analysis.html#ga628c237489c2679af84a4d0d143b3dd5":[5,6,2], "group__analysis.html#ga628c237489c2679af84a4d0d143b3dd5":[5,6,3],
"group__analysis.html#ga70c46687dc6e9dc98b232b02646f8bed":[5,6,5], "group__analysis.html#ga6a4865a887b2ec5247854af61562503c":[5,6,2],
"group__analysis.html#gaa862aa8ed8d57d84cae41fc1022d71af":[5,6,4], "group__analysis.html#ga70c46687dc6e9dc98b232b02646f8bed":[5,6,6],
"group__analysis.html#gadfa01e2900f0e5d515ad5506b26f6d65":[5,6,1], "group__analysis.html#ga8255dc9371e6b299d9802a610c4e34ec":[5,6,1],
"group__analysis.html#gaa862aa8ed8d57d84cae41fc1022d71af":[5,6,5],
"group__analysis.html#structmi__heap__area__t":[5,6,0], "group__analysis.html#structmi__heap__area__t":[5,6,0],
"group__cpp.html":[5,9], "group__cpp.html":[5,9],
"group__cpp.html#ga756f4b2bc6a7ecd0a90baea8e90c7907":[5,9,7], "group__cpp.html#ga5cb4f120d1f7296074256215aa9a9e54":[5,9,5],
"group__cpp.html#gaab78a32f55149e9fbf432d5288e38e1e":[5,9,6], "group__cpp.html#ga633d96e3bc7011f960df9f3b2731fc6a":[5,9,1],
"group__cpp.html#gaad048a9fce3d02c5909cd05c6ec24545":[5,9,1], "group__cpp.html#ga6867d89baf992728e0cc20a1f47db4d0":[5,9,6],
"group__cpp.html#gab5e29558926d934c3f1cae8c815f942c":[5,9,3], "group__cpp.html#ga79c54da0b4b4ce9fcc11d2f6ef6675f8":[5,9,2],
"group__cpp.html#gae7bc4f56cd57ed3359060ff4f38bda81":[5,9,4], "group__cpp.html#ga92ae00b6dd64406c7e64557711ec04b7":[5,9,3],
"group__cpp.html#gaeaded64eda71ed6b1d569d3e723abc4a":[5,9,5], "group__cpp.html#gaace912ce086682d56f3ce9f7638d9d67":[5,9,7],
"group__cpp.html#gaef2c2bdb4f70857902d3c8903ac095f3":[5,9,2], "group__cpp.html#gadd11b85c15d21d308386844b5233856c":[5,9,4],
"group__cpp.html#structmi__stl__allocator":[5,9,0], "group__cpp.html#structmi__stl__allocator":[5,9,0],
"group__extended.html":[5,1], "group__extended.html":[5,1],
"group__extended.html#ga00ec3324b6b2591c7fe3677baa30a767":[5,1,16], "group__extended.html#ga00ec3324b6b2591c7fe3677baa30a767":[5,1,24],
"group__extended.html#ga089c859d9eddc5f9b4bd946cd53cebee":[5,1,24], "group__extended.html#ga089c859d9eddc5f9b4bd946cd53cebee":[5,1,37],
"group__extended.html#ga0ae4581e85453456a0d658b2b98bf7bf":[5,1,21], "group__extended.html#ga0ae4581e85453456a0d658b2b98bf7bf":[5,1,34],
"group__extended.html#ga1ea64283508718d9d645c38efc2f4305":[5,1,0], "group__extended.html#ga1ea64283508718d9d645c38efc2f4305":[5,1,0],
"group__extended.html#ga220f29f40a44404b0061c15bc1c31152":[5,1,25], "group__extended.html#ga292a45f7dbc7cd23c5352ce1f0002816":[5,1,2],
"group__extended.html#ga251d369cda3f1c2a955c555486ed90e5":[5,1,2], "group__extended.html#ga2d126e5c62d3badc35445e5d84166df2":[5,1,27],
"group__extended.html#ga299dae78d25ce112e384a98b7309c5be":[5,1,1], "group__extended.html#ga2ecba0d7ebdc99e71bb985c4a1609806":[5,1,32],
"group__extended.html#ga2d126e5c62d3badc35445e5d84166df2":[5,1,18], "group__extended.html#ga3132f521fb756fc0e8ec0b74fb58df50":[5,1,23],
"group__extended.html#ga3132f521fb756fc0e8ec0b74fb58df50":[5,1,15], "group__extended.html#ga32f519797fd9a81acb4f52d36e6d751b":[5,1,25],
"group__extended.html#ga3460a6ca91af97be4058f523d3cb8ece":[5,1,11], "group__extended.html#ga3460a6ca91af97be4058f523d3cb8ece":[5,1,18],
"group__extended.html#ga3bb8468b8cfcc6e2a61d98aee85c5f99":[5,1,20], "group__extended.html#ga3ae360583f4351aa5267ee7e43008faf":[5,1,10],
"group__extended.html#ga421430e2226d7d468529cec457396756":[5,1,4], "group__extended.html#ga3bb8468b8cfcc6e2a61d98aee85c5f99":[5,1,29],
"group__extended.html#ga4c6486a1fdcd7a423b5f25fe4be8e0cf":[5,1,9], "group__extended.html#ga41ce8525d77bbb60f618fa1029994f6e":[5,1,16],
"group__extended.html#ga537f13b299ddf801e49a5a94fde02c79":[5,1,19], "group__extended.html#ga421430e2226d7d468529cec457396756":[5,1,7],
"group__extended.html#ga5f071b10d4df1c3658e04e7fd67a94e6":[5,1,6], "group__extended.html#ga4c6486a1fdcd7a423b5f25fe4be8e0cf":[5,1,15],
"group__extended.html#ga7136c2e55cb22c98ecf95d08d6debb99":[5,1,8], "group__extended.html#ga51c47637e81df0e2f13a2d7a2dec123e":[5,1,38],
"group__extended.html#ga7795a13d20087447281858d2c771cca1":[5,1,14], "group__extended.html#ga537f13b299ddf801e49a5a94fde02c79":[5,1,28],
"group__extended.html#ga7d862c2affd5790381da14eb102a364d":[5,1,10], "group__extended.html#ga591aab1c2bc2ca920e33f0f9f9cb5c52":[5,1,22],
"group__extended.html#ga854b1de8cb067c7316286c28b2fcd3d1":[5,1,17], "group__extended.html#ga5f071b10d4df1c3658e04e7fd67a94e6":[5,1,12],
"group__extended.html#gaa1d55e0e894be240827e5d87ec3a1f45":[5,1,12], "group__extended.html#ga7795a13d20087447281858d2c771cca1":[5,1,21],
"group__extended.html#gaad25050b19f30cd79397b227e0157a3f":[5,1,7], "group__extended.html#ga7d862c2affd5790381da14eb102a364d":[5,1,17],
"group__extended.html#gab1dac8476c46cb9eecab767eb40c1525":[5,1,23], "group__extended.html#ga7f050bc6b897da82692174f5fce59cde":[5,1,14],
"group__extended.html#gac057927cd06c854b45fe7847e921bd47":[5,1,5], "group__extended.html#ga8068cac328e41fa2170faef707315243":[5,1,33],
"group__extended.html#gad823d23444a4b77a40f66bf075a98a0c":[5,1,3], "group__extended.html#ga83fc6a688b322261e1c2deab000b0591":[5,1,3],
"group__extended.html#gae5b17ff027cd2150b43a33040250cf3f":[5,1,13], "group__extended.html#ga854b1de8cb067c7316286c28b2fcd3d1":[5,1,26],
"group__extended.html#gaf8e73efc2cbca9ebfdfb166983a04c17":[5,1,22], "group__extended.html#ga8c0bcd1fee27c7641e9c3c0d991b3b7d":[5,1,5],
"group__extended.html#ga99fe38650d0b02e0e0f89ee024db91d3":[5,1,1],
"group__extended.html#ga9a25a00a22151619a0be91a10af7787f":[5,1,6],
"group__extended.html#gaa1d55e0e894be240827e5d87ec3a1f45":[5,1,19],
"group__extended.html#gaa7d263e9429bac9ac8345c9d25de610e":[5,1,31],
"group__extended.html#gaad25050b19f30cd79397b227e0157a3f":[5,1,13],
"group__extended.html#gaaf2d9976576d5efd5544be12848af949":[5,1,11],
"group__extended.html#gab1dac8476c46cb9eecab767eb40c1525":[5,1,36],
"group__extended.html#gac057927cd06c854b45fe7847e921bd47":[5,1,9],
"group__extended.html#gad7439207f8f71fb6c382a9ea20b997e7":[5,1,8],
"group__extended.html#gadbc53414eb68b275588ec001ce1ddc7c":[5,1,30],
"group__extended.html#gadf31cea7d0332a81c8b882cbbdbadb8d":[5,1,4],
"group__extended.html#gae5b17ff027cd2150b43a33040250cf3f":[5,1,20],
"group__extended.html#gaf8e73efc2cbca9ebfdfb166983a04c17":[5,1,35],
"group__heap.html":[5,3], "group__heap.html":[5,3],
"group__heap.html#ga00e95ba1e01acac3cfd95bb7a357a6f0":[5,3,20], "group__heap.html#ga012c5c8abe22b10043de39ff95909541":[5,3,12],
"group__heap.html#ga08ca6419a5c057a4d965868998eef487":[5,3,3], "group__heap.html#ga14c667a6e2c5d28762d8cb7d4e057909":[5,3,8],
"group__heap.html#ga139d6b09dbf50c3c2523d0f4d1cfdeb5":[5,3,22],
"group__heap.html#ga23acd7680fb0976dde3783254c6c874b":[5,3,11],
"group__heap.html#ga2ab1af8d438819b55319c7ef51d1e409":[5,3,5], "group__heap.html#ga2ab1af8d438819b55319c7ef51d1e409":[5,3,5],
"group__heap.html#ga33f4f05b7fea7af2113c62a4bf882cc5":[5,3,10],
"group__heap.html#ga349b677dec7da5eacdbc7a385bd62a4a":[5,3,21],
"group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2":[5,3,0], "group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2":[5,3,0],
"group__heap.html#ga45fb43a62776fbebbdf1edd99b527954":[5,3,26], "group__heap.html#ga484e3d01cd174f78c7e53370e5a7c819":[5,3,26],
"group__heap.html#ga4a21070eb4e7cce018133c8d5f4b0527":[5,3,18], "group__heap.html#ga55545a3ec6da29c5b4f62e540ecac1e2":[5,3,20],
"group__heap.html#ga4af03a6e2b93fae77424d93f889705c3":[5,3,2], "group__heap.html#ga5754e09ccc51dd6bc73885bb6ea21b7a":[5,3,22],
"group__heap.html#ga5d03fbe062ffcf38f0f417fd968357fc":[5,3,7], "group__heap.html#ga6466bde8b5712aa34e081a8317f9f471":[5,3,25],
"group__heap.html#ga766f672ba56f2fbfeb9d9dbb0b7f6b11":[5,3,14], "group__heap.html#ga6df988a7219d5707f010d5f3eb0dc3f5":[5,3,17],
"group__heap.html#ga7922f7495cde30b1984d0e6072419298":[5,3,4], "group__heap.html#ga7922f7495cde30b1984d0e6072419298":[5,3,4],
"group__heap.html#ga851da6c43fe0b71c1376cee8aef90db0":[5,3,13],
"group__heap.html#ga8db4cbb87314a989a9a187464d6b5e05":[5,3,8],
"group__heap.html#ga8e3dbd46650dd26573cf307a2c8f1f5a":[5,3,23],
"group__heap.html#ga903104592c8ed53417a3762da6241133":[5,3,24],
"group__heap.html#ga9cbed01e42c0647907295de92c3fa296":[5,3,9],
"group__heap.html#ga9f9c0844edb9717f4feacd79116b8e0d":[5,3,6], "group__heap.html#ga9f9c0844edb9717f4feacd79116b8e0d":[5,3,6],
"group__heap.html#gaa1a1c7a1f4da6826b5a25b70ef878368":[5,3,12], "group__heap.html#gaa42ec2079989c4374f2c331d9b35f4e4":[5,3,3],
"group__heap.html#gaa450a59c6c7ae5fdbd1c2b80a8329ef0":[5,3,25], "group__heap.html#gaa718bb226ec0546ba6d1b6cb32179f3a":[5,3,14],
"group__heap.html#gaa6702b3c48e9e53e50e81b36f5011d55":[5,3,1], "group__heap.html#gab0f755c0b21c387fe8e9024200faa372":[5,3,13],
"group__heap.html#gaaef3395f66be48f37bdc8322509c5d81":[5,3,15], "group__heap.html#gab374e206c7034e0d899fb934e4f4a863":[5,3,9],
"group__heap.html#gab5b87e1805306f70df38789fcfcf6653":[5,3,10], "group__heap.html#gabebc796399619d964d8db77aa835e8c1":[5,3,24],
"group__heap.html#gab8631ec88c8d26641b68b5d25dcd4422":[5,3,21], "group__heap.html#gac0098aaf231d3e9586c73136d5df95da":[5,3,1],
"group__heap.html#gac74e94ad9b0c9b57c1c4d88b8825b7a8":[5,3,19], "group__heap.html#gac5252d6a2e510bd349e4fcb452e6a93a":[5,3,15],
"group__heap.html#gaf96c788a1bf553fe2d371de9365e047c":[5,3,17], "group__heap.html#gac6ac9f0e7be9ab4ff70acfc8dad1235a":[5,3,7],
"group__heap.html#gafc603b696bd14cae6da28658f950d98c":[5,3,16], "group__heap.html#gacafcc26df827c7a7de5e850217566108":[5,3,2],
"group__heap.html#gaccf7bfe10ce510a000d3547d9cf7fa29":[5,3,19],
"group__heap.html#gaccf8c249872f30bf1c2493a09197d734":[5,3,16],
"group__heap.html#gad224df78f1fbee942df8adf023e12cf3":[5,3,23],
"group__heap.html#gae7cd171425bee04c683c65a3701f0b4a":[5,3,18],
"group__heap.html#gae7ffc045c3996497a7f3a5f6fe7b8aaa":[5,3,11],
"group__malloc.html":[5,0], "group__malloc.html":[5,0],
"group__malloc.html#ga08cec32dd5bbe7da91c78d19f1b5bebe":[5,0,8], "group__malloc.html#ga0621af6a5e3aa384e6a1b548958bf583":[5,0,5],
"group__malloc.html#ga0b05e2bf0f73e7401ae08597ff782ac6":[5,0,4], "group__malloc.html#ga19299856216cfbb08e2628593654dfb0":[5,0,1],
"group__malloc.html#ga23a0fbb452b5dce8e31fab1a1958cacc":[5,0,9], "group__malloc.html#ga23a0fbb452b5dce8e31fab1a1958cacc":[5,0,9],
"group__malloc.html#ga3406e8b168bc74c8637b11571a6da83a":[5,0,3], "group__malloc.html#ga245ac90ebc2cfdd17de599e5fea59889":[5,0,10],
"group__malloc.html#ga61d57b4144ba24fba5c1e9b956d13853":[5,0,7], "group__malloc.html#ga486d0d26b3b3794f6d1cdb41a9aed92d":[5,0,11],
"group__malloc.html#ga97fedb4f7107c592fd7f0f0a8949a57d":[5,0,0], "group__malloc.html#ga4dc3a4067037b151a64629fe8a332641":[5,0,6],
"group__malloc.html#gaaabf971c2571891433477e2d21a35266":[5,0,11], "group__malloc.html#ga61f46bade3db76ca24aaafedc40de7b6":[5,0,4],
"group__malloc.html#gaaee66a1d483c3e28f585525fb96707e4":[5,0,1], "group__malloc.html#ga6686568014b54d1e6c7ac64a076e4f56":[5,0,0],
"group__malloc.html#gac7cffe13f1f458ed16789488bf92b9b2":[5,0,10], "group__malloc.html#ga8bddfb4a1270a0854bbcf44cb3980467":[5,0,7],
"group__malloc.html#gaf11eb497da57bdfb2de65eb191c69db6":[5,0,5], "group__malloc.html#ga94c3afcc086e85d75a57e9f76b9b71dd":[5,0,8],
"group__malloc.html#gae1dd97b542420c87ae085e822b1229e8":[5,0,3],
"group__malloc.html#gae6e38c4403247a7b40d80419e093bfb8":[5,0,12],
"group__malloc.html#gaf2c7b89c327d1f60f59e68b9ea644d95":[5,0,2], "group__malloc.html#gaf2c7b89c327d1f60f59e68b9ea644d95":[5,0,2],
"group__malloc.html#gafdd9d8bb2986e668ba9884f28af38000":[5,0,12],
"group__malloc.html#gafe68ac7c5e24a65cd55c9d6b152211a0":[5,0,6],
"group__options.html":[5,7], "group__options.html":[5,7],
"group__options.html#ga04180ae41b0d601421dd62ced40ca050":[5,7,2], "group__options.html#ga04180ae41b0d601421dd62ced40ca050":[5,7,2],
"group__options.html#ga459ad98f18b3fc9275474807fe0ca188":[5,7,4], "group__options.html#ga274db5a6ac87cc24ef0b23e7006ed02c":[5,7,5],
"group__options.html#ga65518b69ec5d32336b50e07f74b3f629":[5,7,8], "group__options.html#ga459ad98f18b3fc9275474807fe0ca188":[5,7,6],
"group__options.html#ga65518b69ec5d32336b50e07f74b3f629":[5,7,10],
"group__options.html#ga7e8af195cc81d3fa64ccf2662caa565a":[5,7,3], "group__options.html#ga7e8af195cc81d3fa64ccf2662caa565a":[5,7,3],
"group__options.html#ga7ef623e440e6e5545cb08c94e71e4b90":[5,7,6], "group__options.html#ga7ef623e440e6e5545cb08c94e71e4b90":[5,7,8],
"group__options.html#ga9a13d05fcb77489cb06d4d017ebd8bed":[5,7,7], "group__options.html#ga96ad9c406338bd314cfe878cfc9bf723":[5,7,4],
"group__options.html#ga9a13d05fcb77489cb06d4d017ebd8bed":[5,7,9],
"group__options.html#gaebf6ff707a2e688ebb1a2296ca564054":[5,7,1], "group__options.html#gaebf6ff707a2e688ebb1a2296ca564054":[5,7,1],
"group__options.html#gaf84921c32375e25754dc2ee6a911fa60":[5,7,5], "group__options.html#gaf84921c32375e25754dc2ee6a911fa60":[5,7,7],
"group__options.html#gafebf7ed116adb38ae5218bc3ce06884c":[5,7,0], "group__options.html#gafebf7ed116adb38ae5218bc3ce06884c":[5,7,0],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca009e4b5684922ce664d73d2a8e1698d9":[5,7,0,24],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca02005f164bdf03f5f00c5be726adf487":[5,7,0,25],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0957ef73b2550764b4840edf48422fda":[5,7,0,1], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0957ef73b2550764b4840edf48422fda":[5,7,0,1],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0ac33a18f6b659fcfaf44efb0bab1b74":[5,7,0,12], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0ac33a18f6b659fcfaf44efb0bab1b74":[5,7,0,18],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca154fe170131d5212cff57e22b99523c5":[5,7,0,11], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca11e62ed69200a489a5be955582078c0c":[5,7,0,16],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca17a190c25be381142d87e0468c4c068c":[5,7,0,14], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca17a190c25be381142d87e0468c4c068c":[5,7,0,14],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca1e8de72c93da7ff22d91e1e27b52ac2b":[5,7,0,3], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca1e8de72c93da7ff22d91e1e27b52ac2b":[5,7,0,13],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca2ecbe7ef32f5c84de3739aa4f0b805a1":[5,7,0,8], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca38c67733a3956a1f4eeaca89fab9e78e":[5,7,0,27],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca32ce97ece29f69e82579679cf8a307ad":[5,7,0,4], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4b74ae2a69e445de6c2361b73c1d14bf":[5,7,0,11],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4192d491200d0055df0554d4cf65054e":[5,7,0,5], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca5b4357b74be0d87568036c32eb1a2e4a":[5,7,0,28],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4b74ae2a69e445de6c2361b73c1d14bf":[5,7,0,15], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca6364331e305e7d3c0218b058ff3afc88":[5,7,0,22],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca5b4357b74be0d87568036c32eb1a2e4a":[5,7,0,16],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7c8b7bf5281c581bad64f5daa6442777":[5,7,0,2], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7c8b7bf5281c581bad64f5daa6442777":[5,7,0,2],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa13e7926d4339d2aa6fbf61d4473fd5c":[5,7,0,7], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7cc4804ced69004fa42a9a136a9ba556":[5,7,0,8],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cac81ee965b130fa81238913a3c239d536":[5,7,0,13], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca8236501f1ab45d26e6fd885d191a2b5e":[5,7,0,23],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caca7ed041be3b0b9d0b82432c7bf41af2":[5,7,0,6], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca8f51df355bf6651db899e6085b54865e":[5,7,0,12],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cada854dd272c66342f18a93ee254a2968":[5,7,0,9], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca9d15c5e3d2115eef681c17e4dd5ab9a4":[5,7,0,9],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafb121d30d87591850d5410ccc3a95c6d":[5,7,0,10], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca9fa61bd9668479f8452d2195759444cc":[5,7,0,20],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa13e7926d4339d2aa6fbf61d4473fd5c":[5,7,0,6],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa9ad9005d7017c8c30ad2d6ba31db909":[5,7,0,21],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cab1c88e23ae290bbeec824038a97959de":[5,7,0,10],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caca7ed041be3b0b9d0b82432c7bf41af2":[5,7,0,5],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cadcfb5a09580361b1be65901d2d812de6":[5,7,0,19],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cadd351e615acd8563529c20a347be7290":[5,7,0,17],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caeae1696100e4057ffc4182730cc04e40":[5,7,0,26],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caec6ecbe29d46a48205ed8823a8a52a6a":[5,7,0,3],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caf9595921087e942602ee079158762665":[5,7,0,4],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4822e5c00732c5984b32a032837f0":[5,7,0,0], "group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4822e5c00732c5984b32a032837f0":[5,7,0,0],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4999c828cf79a0fb2de65d23f7333":[5,7,0,7],
"group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafd0c5ddbc4b59fd8b5216871728167a5":[5,7,0,15],
"group__posix.html":[5,8], "group__posix.html":[5,8],
"group__posix.html#ga06d07cf357bbac5c73ba5d0c0c421e17":[5,8,7], "group__posix.html#ga06d07cf357bbac5c73ba5d0c0c421e17":[5,8,12],
"group__posix.html#ga0d28d5cf61e6bfbb18c63092939fe5c9":[5,8,3], "group__posix.html#ga0d28d5cf61e6bfbb18c63092939fe5c9":[5,8,7],
"group__posix.html#ga1326d2e4388630b5f81ca7206318b8e5":[5,8,1], "group__posix.html#ga16570deddd559001b44953eedbad0084":[5,8,3],
"group__posix.html#ga4531c9e775bb3ae12db57c1ba8a5d7de":[5,8,6], "group__posix.html#ga430ed1513f0571ff83be00ec58a98ee0":[5,8,2],
"group__posix.html#ga48fad8648a2f1dab9c87ea9448a52088":[5,8,12], "group__posix.html#ga4531c9e775bb3ae12db57c1ba8a5d7de":[5,8,11],
"group__posix.html#ga705dc7a64bffacfeeb0141501a5c35d7":[5,8,2], "group__posix.html#ga50cafb9722020402f065de93799f64ca":[5,8,19],
"group__posix.html#ga72e9d7ffb5fe94d69bc722c8506e27bc":[5,8,5], "group__posix.html#ga644bebccdbb2821542dd8c7e7641f476":[5,8,16],
"group__posix.html#ga73baaf5951f5165ba0763d0c06b6a93b":[5,8,13], "group__posix.html#ga66bcfeb4faedbb42b796bc680821ef84":[5,8,0],
"group__posix.html#ga7e1934d60a3e697950eeb48e042bfad5":[5,8,11], "group__posix.html#ga6ac6a6a8f3c96f1af24bb8d0439cbbd1":[5,8,21],
"group__posix.html#gaab7fa71ea93b96873f5d9883db57d40e":[5,8,8], "group__posix.html#ga705dc7a64bffacfeeb0141501a5c35d7":[5,8,5],
"group__posix.html#gacff84f226ba9feb2031b8992e5579447":[5,8,9], "group__posix.html#ga726867f13fd29ca36064954c0285b1d8":[5,8,14],
"group__posix.html#gad5a69c8fea96aa2b7a7c818c2130090a":[5,8,0], "group__posix.html#ga72e9d7ffb5fe94d69bc722c8506e27bc":[5,8,9],
"group__posix.html#gae01389eedab8d67341ff52e2aad80ebb":[5,8,4], "group__posix.html#ga7b82a44094fdec4d2084eb4288a979b0":[5,8,13],
"group__posix.html#gaeb325c39b887d3b90d85d1eb1712fb1e":[5,8,10], "group__posix.html#ga7e1934d60a3e697950eeb48e042bfad5":[5,8,17],
"group__posix.html#ga9d23ac7885fed7413c11d8e0ffa31071":[5,8,10],
"group__posix.html#gaa9fd7f25c9ac3a20e89b33bd6e383fcf":[5,8,20],
"group__posix.html#gab41369c1a1da7504013a7a0b1d4dd958":[5,8,6],
"group__posix.html#gacff84f226ba9feb2031b8992e5579447":[5,8,15],
"group__posix.html#gad5a69c8fea96aa2b7a7c818c2130090a":[5,8,1],
"group__posix.html#gadfeccb72748a2f6305474a37d9d57bce":[5,8,18],
"group__posix.html#gae01389eedab8d67341ff52e2aad80ebb":[5,8,8],
"group__posix.html#gaf82cbb4b4f24acf723348628451798d3":[5,8,4],
"group__typed.html":[5,5], "group__typed.html":[5,5],
"group__typed.html#ga0619a62c5fd886f1016030abe91f0557":[5,5,7], "group__typed.html#ga0619a62c5fd886f1016030abe91f0557":[5,5,7],
"group__typed.html#ga1158b49a55dfa81f58a4426a7578f523":[5,5,9], "group__typed.html#ga1158b49a55dfa81f58a4426a7578f523":[5,5,9],
@ -162,20 +199,20 @@ var NAVTREEINDEX0 =
"group__typed.html#gae80c47c9d4cab10961fff1a8ac98fc07":[5,5,0], "group__typed.html#gae80c47c9d4cab10961fff1a8ac98fc07":[5,5,0],
"group__typed.html#gaf213d5422ec35e7f6caad827c79bc948":[5,5,4], "group__typed.html#gaf213d5422ec35e7f6caad827c79bc948":[5,5,4],
"group__zeroinit.html":[5,4], "group__zeroinit.html":[5,4],
"group__zeroinit.html#ga375fa8a611c51905e592d5d467c49664":[5,4,4], "group__zeroinit.html#ga07b5bcbaf00d0d2e598c232982588496":[5,4,2],
"group__zeroinit.html#ga3e7e5c291acf1c7fd7ffd9914a9f945f":[5,4,6], "group__zeroinit.html#ga2bafa79c3f98ea74882349d44cffa5d9":[5,4,5],
"group__zeroinit.html#ga496452c96f1de8c500be9fddf52edaf7":[5,4,2], "group__zeroinit.html#ga3e2169b48683aa0ab64f813fd68d839e":[5,4,6],
"group__zeroinit.html#ga4ff5e92ad73585418a072c9d059e5cf9":[5,4,7], "group__zeroinit.html#ga4d02404fe1e7db00beb65f185e012caa":[5,4,9],
"group__zeroinit.html#ga8648c5fbb22a80f0262859099f06dfbd":[5,4,0], "group__zeroinit.html#ga5129f6dc46ee1613d918820a8a0533a7":[5,4,4],
"group__zeroinit.html#ga8c292e142110229a2980b37ab036dbc6":[5,4,8], "group__zeroinit.html#ga6843a88285bbfcc3bdfccc60aafd1270":[5,4,10],
"group__zeroinit.html#ga9f3f999396c8f77ca5e80e7b40ac29e3":[5,4,1], "group__zeroinit.html#ga87ddd674bf1c67237d780d0b9e0f0f32":[5,4,1],
"group__zeroinit.html#gac90da54fa7e5d10bdc97ce0b51dce2eb":[5,4,5], "group__zeroinit.html#ga8d8b7ebb24b513cd84d1a696048da60d":[5,4,3],
"group__zeroinit.html#gacd71a7bce96aab38ae6de17af2eb2cf0":[5,4,9], "group__zeroinit.html#gaae25e4ddedd4e0fb61b1a8bd5d452750":[5,4,7],
"group__zeroinit.html#gacfad83f14eb5d6a42a497a898e19fc76":[5,4,3], "group__zeroinit.html#gad1a0d325d930eeb80f25e3fea37aacde":[5,4,0],
"group__zeroinit.html#gae8b358c417e61d5307da002702b0a8e1":[5,4,10], "group__zeroinit.html#gadfd34cd7b4f2bbda7ae06367a6360756":[5,4,8],
"index.html":[], "index.html":[],
"modules.html":[5],
"overrides.html":[3], "overrides.html":[3],
"pages.html":[], "pages.html":[],
"topics.html":[5],
"using.html":[1] "using.html":[1]
}; };

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Overriding Malloc</title> <title>mi-malloc: Overriding Malloc</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('overrides.html',''); initResizable(); }); $(function(){initNavTree('overrides.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,43 +91,47 @@ $(document).ready(function(){initNavTree('overrides.html',''); initResizable();
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="PageDoc"><div class="header"> <div><div class="header">
<div class="headertitle"> <div class="headertitle"><div class="title">Overriding Malloc</div></div>
<div class="title">Overriding Malloc </div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<div class="textblock"><p>Overriding the standard <code>malloc</code> can be done either <em>dynamically</em> or <em>statically</em>.</p> <div class="textblock"><p>Overriding the standard <code>malloc</code> (and <code>new</code>) can be done either <em>dynamically</em> or <em>statically</em>.</p>
<h2>Dynamic override</h2> <h2>Dynamic override</h2>
<p>This is the recommended way to override the standard malloc interface.</p> <p>This is the recommended way to override the standard malloc interface.</p>
<h3>Linux, BSD</h3> <h3>Dynamic Override on Linux, BSD</h3>
<p>On these systems we preload the mimalloc shared library so all calls to the standard <code>malloc</code> interface are resolved to the <em>mimalloc</em> library.</p> <p>On these ELF-based systems we preload the mimalloc shared library so all calls to the standard <code>malloc</code> interface are resolved to the <em>mimalloc</em> library. </p><div class="fragment"><div class="line">&gt; env LD_PRELOAD=/usr/lib/libmimalloc.so myprogram</div>
<ul> </div><!-- fragment --><p>You can set extra environment variables to check that mimalloc is running, like: </p><div class="fragment"><div class="line">&gt; env MIMALLOC_VERBOSE=1 LD_PRELOAD=/usr/lib/libmimalloc.so myprogram</div>
<li><code>env LD_PRELOAD=/usr/lib/libmimalloc.so myprogram</code></li> </div><!-- fragment --><p> or run with the debug version to get detailed statistics: </p><div class="fragment"><div class="line">&gt; env MIMALLOC_SHOW_STATS=1 LD_PRELOAD=/usr/lib/libmimalloc-debug.so myprogram</div>
</ul> </div><!-- fragment --><h3>Dynamic Override on MacOS</h3>
<p>You can set extra environment variables to check that mimalloc is running, like: </p><div class="fragment"><div class="line">env MIMALLOC_VERBOSE=1 LD_PRELOAD=/usr/lib/libmimalloc.so myprogram</div> <p>On macOS we can also preload the mimalloc shared library so all calls to the standard <code>malloc</code> interface are resolved to the <em>mimalloc</em> library. </p><div class="fragment"><div class="line">&gt; env DYLD_INSERT_LIBRARIES=/usr/lib/libmimalloc.dylib myprogram</div>
</div><!-- fragment --><p> or run with the debug version to get detailed statistics: </p><div class="fragment"><div class="line">env MIMALLOC_SHOW_STATS=1 LD_PRELOAD=/usr/lib/libmimalloc-debug.so myprogram</div> </div><!-- fragment --><p>Note that certain security restrictions may apply when doing this from the <a href="https://stackoverflow.com/questions/43941322/dyld-insert-libraries-ignored-when-calling-application-through-bash">shell</a>.</p>
</div><!-- fragment --><h3>MacOS</h3> <h3>Dynamic Override on Windows</h3>
<p>On macOS we can also preload the mimalloc shared library so all calls to the standard <code>malloc</code> interface are resolved to the <em>mimalloc</em> library.</p> <p><span id="override_on_windows">Dynamically overriding on mimalloc on Windows</span> is robust and has the particular advantage to be able to redirect all malloc/free calls that go through the (dynamic) C runtime allocator, including those from other DLL's or libraries. As it intercepts all allocation calls on a low level, it can be used reliably on large programs that include other 3rd party components. There are four requirements to make the overriding work well:</p>
<ul> <ol type="1">
<li><code>env DYLD_FORCE_FLAT_NAMESPACE=1 DYLD_INSERT_LIBRARIES=/usr/lib/libmimalloc.dylib myprogram</code></li> <li>Use the C-runtime library as a DLL (using the <code>/MD</code> or <code>/MDd</code> switch).</li>
</ul> <li>Link your program explicitly with the <code>mimalloc.lib</code> export library for the <code>mimalloc.dll</code>. (which must be compiled with <code>-DMI_OVERRIDE=ON</code>, which is the default though). To ensure the <code>mimalloc.dll</code> is actually loaded at run-time it is easiest to insert some call to the mimalloc API in the <code>main</code> function, like <code>mi_version()</code> (or use the <code>/include:mi_version</code> switch on the linker command, or similarly, <code>#pragma comment(linker, "/include:mi_version")</code> in some source file). See the <code>mimalloc-test-override</code> project for an example on how to use this.</li>
<p>Note that certain security restrictions may apply when doing this from the <a href="https://stackoverflow.com/questions/43941322/dyld-insert-libraries-ignored-when-calling-application-through-bash">shell</a>.</p> <li>The <code>mimalloc-redirect.dll</code> must be put in the same directory as the main <code>mimalloc.dll</code> at runtime (as it is a dependency of that DLL). The redirection DLL ensures that all calls to the C runtime malloc API get redirected to mimalloc functions (which reside in <code>mimalloc.dll</code>).</li>
<p>(Note: macOS support for dynamic overriding is recent, please report any issues.)</p> <li>Ensure the <code>mimalloc.dll</code> comes as early as possible in the import list of the final executable (so it can intercept all potential allocations). You can use <code>minject -l &lt;exe&gt;</code> to check this if needed.</li>
<h3>Windows</h3> </ol>
<p>Overriding on Windows is robust and has the particular advantage to be able to redirect all malloc/free calls that go through the (dynamic) C runtime allocator, including those from other DLL's or libraries.</p> <p>For best performance on Windows with C++, it is also recommended to also override the <code>new</code>/<code>delete</code> operations (by including <a href="include/mimalloc-new-delete.h"><code>mimalloc-new-delete.h</code></a> a single(!) source file in your project).</p>
<p>The overriding on Windows requires that you link your program explicitly with the mimalloc DLL and use the C-runtime library as a DLL (using the <code>/MD</code> or <code>/MDd</code> switch). Also, the <code>mimalloc-redirect.dll</code> (or <code>mimalloc-redirect32.dll</code>) must be available in the same folder as the main <code>mimalloc-override.dll</code> at runtime (as it is a dependency). The redirection DLL ensures that all calls to the C runtime malloc API get redirected to mimalloc (in <code>mimalloc-override.dll</code>).</p>
<p>To ensure the mimalloc DLL is loaded at run-time it is easiest to insert some call to the mimalloc API in the <code>main</code> function, like <code>mi_version()</code> (or use the <code>/INCLUDE:mi_version</code> switch on the linker). See the <code>mimalloc-override-test</code> project for an example on how to use this. For best performance on Windows with C++, it is also recommended to also override the <code>new</code>/<code>delete</code> operations (by including <a href="https://github.com/microsoft/mimalloc/blob/master/include/mimalloc-new-delete.h"><code>mimalloc-new-delete.h</code></a> a single(!) source file in your project without linking to the mimalloc library).</p>
<p>The environment variable <code>MIMALLOC_DISABLE_REDIRECT=1</code> can be used to disable dynamic overriding at run-time. Use <code>MIMALLOC_VERBOSE=1</code> to check if mimalloc was successfully redirected.</p> <p>The environment variable <code>MIMALLOC_DISABLE_REDIRECT=1</code> can be used to disable dynamic overriding at run-time. Use <code>MIMALLOC_VERBOSE=1</code> to check if mimalloc was successfully redirected.</p>
<p>(Note: in principle, it is possible to even patch existing executables without any recompilation if they are linked with the dynamic C runtime (<code>ucrtbase.dll</code>) &ndash; just put the <code>mimalloc-override.dll</code> into the import table (and put <code>mimalloc-redirect.dll</code> in the same folder) Such patching can be done for example with <a href="https://ntcore.com/?page_id=388">CFF Explorer</a>).</p> <p>For different platforms than x64, you may need a specific [redirection dll](bin). Furthermore, we cannot always re-link an executable or ensure <code>mimalloc.dll</code> comes first in the import table. In such cases the [<code>minject</code>](bin) tool can be used to patch the executable's import tables.</p>
<h2>Static override</h2> <h2>Static override</h2>
<p>On Unix systems, you can also statically link with <em>mimalloc</em> to override the standard malloc interface. The recommended way is to link the final program with the <em>mimalloc</em> single object file (<code>mimalloc-override.o</code>). We use an object file instead of a library file as linkers give preference to that over archives to resolve symbols. To ensure that the standard malloc interface resolves to the <em>mimalloc</em> library, link it as the first object file. For example:</p> <p>On Unix-like systems, you can also statically link with <em>mimalloc</em> to override the standard malloc interface. The recommended way is to link the final program with the <em>mimalloc</em> single object file (<code>mimalloc.o</code>). We use an object file instead of a library file as linkers give preference to that over archives to resolve symbols. To ensure that the standard malloc interface resolves to the <em>mimalloc</em> library, link it as the first object file. For example: </p><div class="fragment"><div class="line">&gt; gcc -o myprogram mimalloc.o myfile1.c ...</div>
<div class="fragment"><div class="line">gcc -o myprogram mimalloc-<span class="keyword">override</span>.o myfile1.c ...</div> </div><!-- fragment --><p>Another way to override statically that works on all platforms, is to link statically to mimalloc (as shown in the introduction) and include a header file in each source file that re-defines <code>malloc</code> etc. to <code>mi_malloc</code>. This is provided by <a href="https://github.com/microsoft/mimalloc/blob/master/include/mimalloc-override.h"><code>mimalloc-override.h</code></a>. This only works reliably though if all sources are under your control or otherwise mixing of pointers from different heaps may occur!</p>
</div><!-- fragment --><h2>List of Overrides:</h2> <h2>List of Overrides:</h2>
<p>The specific functions that get redirected to the <em>mimalloc</em> library are:</p> <p>The specific functions that get redirected to the <em>mimalloc</em> library are:</p>
<div class="fragment"><div class="line"><span class="comment">// C</span></div> <div class="fragment"><div class="line"><span class="comment">// C</span></div>
<div class="line"><span class="keywordtype">void</span>* malloc(<span class="keywordtype">size_t</span> size);</div> <div class="line"><span class="keywordtype">void</span>* malloc(<span class="keywordtype">size_t</span> size);</div>
@ -142,10 +149,10 @@ $(document).ready(function(){initNavTree('overrides.html',''); initResizable();
<div class="line"><span class="keywordtype">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span>(<span class="keywordtype">void</span>* p);</div> <div class="line"><span class="keywordtype">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span>(<span class="keywordtype">void</span>* p);</div>
<div class="line"><span class="keywordtype">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span>[](<span class="keywordtype">void</span>* p);</div> <div class="line"><span class="keywordtype">void</span> <span class="keyword">operator</span> <span class="keyword">delete</span>[](<span class="keywordtype">void</span>* p);</div>
<div class="line"> </div> <div class="line"> </div>
<div class="line"><span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(std::size_t n) noexcept(<span class="keyword">false</span>);</div> <div class="line"><span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>(std::size_t n) <span class="keyword">noexcept</span>(<span class="keyword">false</span>);</div>
<div class="line"><span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>[](std::size_t n) noexcept(<span class="keyword">false</span>);</div> <div class="line"><span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>[](std::size_t n) <span class="keyword">noexcept</span>(<span class="keyword">false</span>);</div>
<div class="line"><span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>( std::size_t n, std::align_val_t align) noexcept(<span class="keyword">false</span>);</div> <div class="line"><span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>( std::size_t n, std::align_val_t align) <span class="keyword">noexcept</span>(<span class="keyword">false</span>);</div>
<div class="line"><span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>[]( std::size_t n, std::align_val_t align) noexcept(<span class="keyword">false</span>);</div> <div class="line"><span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>[]( std::size_t n, std::align_val_t align) <span class="keyword">noexcept</span>(<span class="keyword">false</span>);</div>
<div class="line"> </div> <div class="line"> </div>
<div class="line"><span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span> ( std::size_t count, <span class="keyword">const</span> std::nothrow_t&amp; tag);</div> <div class="line"><span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span> ( std::size_t count, <span class="keyword">const</span> std::nothrow_t&amp; tag);</div>
<div class="line"><span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>[]( std::size_t count, <span class="keyword">const</span> std::nothrow_t&amp; tag);</div> <div class="line"><span class="keywordtype">void</span>* <span class="keyword">operator</span> <span class="keyword">new</span>[]( std::size_t count, <span class="keyword">const</span> std::nothrow_t&amp; tag);</div>
@ -191,7 +198,7 @@ $(document).ready(function(){initNavTree('overrides.html',''); initResizable();
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -1,24 +1,26 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head> <head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.13.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mi-malloc: Related Pages</title> <title>mi-malloc: Related Pages</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script> <script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_search(); }); $(function() { init_search(); });
/* @license-end */ /* @license-end */
</script> </script>
<link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="doxygen.css" rel="stylesheet" type="text/css" />
@ -29,22 +31,18 @@
<div id="titlearea"> <div id="titlearea">
<table cellspacing="0" cellpadding="0"> <table cellspacing="0" cellpadding="0">
<tbody> <tbody>
<tr style="height: 56px;"> <tr id="projectrow">
<td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td> <td id="projectlogo"><img alt="Logo" src="mimalloc-logo.svg"/></td>
<td id="projectalign" style="padding-left: 0.5em;"> <td id="projectalign">
<div id="projectname">mi-malloc <div id="projectname">mi-malloc<span id="projectnumber">&#160;1.8/2.1</span>
&#160;<span id="projectnumber">1.7/2.0</span>
</div> </div>
</td> </td>
<td> <div id="MSearchBox" class="MSearchBoxInactive"> <td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left"> <span class="left">
<img id="MSearchSelect" src="search/mag_sel.svg" <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
onmouseover="return searchBox.OnSearchSelectShow()" <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onmouseout="return searchBox.OnSearchSelectHide()" onfocus="searchBox.OnSearchFieldFocus(true)"
alt=""/> onblur="searchBox.OnSearchFieldFocus(false)"
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/> onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right"> </span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
@ -56,10 +54,15 @@
</table> </table>
</div> </div>
<!-- end header part --> <!-- end header part -->
<!-- Generated by Doxygen 1.9.1 --> <!-- Generated by Doxygen 1.13.1 -->
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html'); var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */ /* @license-end */
</script> </script>
</div><!-- top --> </div><!-- top -->
@ -69,13 +72,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
<div id="nav-sync" class="sync"></div> <div id="nav-sync" class="sync"></div>
</div> </div>
</div> </div>
<div id="splitbar" style="-moz-user-select:none;" <div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle"> class="ui-resizable-handle">
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */ /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('pages.html',''); initResizable(); }); $(function(){initNavTree('pages.html',''); initResizable(true); });
/* @license-end */ /* @license-end */
</script> </script>
<div id="doc-content"> <div id="doc-content">
@ -88,22 +91,28 @@ $(document).ready(function(){initNavTree('pages.html',''); initResizable(); });
<!-- iframe showing the search results (closed by default) --> <!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow"> <div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" <div id="MSearchResults">
name="MSearchResults" id="MSearchResults"> <div class="SRPage">
</iframe> <div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div> </div>
<div class="header"> <div class="header">
<div class="headertitle"> <div class="headertitle"><div class="title">Related Pages</div></div>
<div class="title">Related Pages</div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory"> <div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
<table class="directory"> <table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="build.html" target="_self">Building</a></td><td class="desc"></td></tr> <tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="build.html" target="_self">Building</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="using.html" target="_self">Using the library</a></td><td class="desc"></td></tr> <tr id="row_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="using.html" target="_self">Using the library</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="environment.html" target="_self">Environment Options</a></td><td class="desc"></td></tr> <tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="environment.html" target="_self">Environment Options</a></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="overrides.html" target="_self">Overriding Malloc</a></td><td class="desc"></td></tr> <tr id="row_3_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="overrides.html" target="_self">Overriding Malloc</a></td><td class="desc"></td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="bench.html" target="_self">Performance</a></td><td class="desc"></td></tr> <tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="bench.html" target="_self">Performance</a></td><td class="desc"></td></tr>
</table> </table>
</div><!-- directory --> </div><!-- directory -->
@ -112,7 +121,7 @@ $(document).ready(function(){initNavTree('pages.html',''); initResizable(); });
<!-- start footer part --> <!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul> <ul>
<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.9.1 </li> <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>
</ul> </ul>
</div> </div>
</body> </body>

View file

@ -22,119 +22,126 @@
@licend The above is the entire license notice for the JavaScript code in this file @licend The above is the entire license notice for the JavaScript code in this file
*/ */
function initResizable()
{
var cookie_namespace = 'doxygen';
var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight;
function readCookie(cookie) function initResizable(treeview) {
{ let sidenav,navtree,content,header,footer,barWidth=6;
var myCookie = cookie_namespace+"_"+cookie+"="; const RESIZE_COOKIE_NAME = ''+'width';
if (document.cookie) {
var index = document.cookie.indexOf(myCookie);
if (index != -1) {
var valStart = index + myCookie.length;
var valEnd = document.cookie.indexOf(";", valStart);
if (valEnd == -1) {
valEnd = document.cookie.length;
}
var val = document.cookie.substring(valStart, valEnd);
return val;
}
}
return 0;
}
function writeCookie(cookie, val, expiration) function resizeWidth() {
{ const sidenavWidth = $(sidenav).outerWidth();
if (val==undefined) return;
if (expiration == null) {
var date = new Date();
date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week
expiration = date.toGMTString();
}
document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/";
}
function resizeWidth()
{
var windowWidth = $(window).width() + "px";
var sidenavWidth = $(sidenav).outerWidth();
content.css({marginLeft:parseInt(sidenavWidth)+"px"}); content.css({marginLeft:parseInt(sidenavWidth)+"px"});
writeCookie('width',sidenavWidth-barWidth, null); if (typeof page_layout!=='undefined' && page_layout==1) {
footer.css({marginLeft:parseInt(sidenavWidth)+"px"});
}
Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth);
} }
function restoreWidth(navWidth) function restoreWidth(navWidth) {
{
var windowWidth = $(window).width() + "px";
content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); content.css({marginLeft:parseInt(navWidth)+barWidth+"px"});
if (typeof page_layout!=='undefined' && page_layout==1) {
footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"});
}
sidenav.css({width:navWidth + "px"}); sidenav.css({width:navWidth + "px"});
} }
function resizeHeight() function resizeHeight(treeview) {
{ const headerHeight = header.outerHeight();
var headerHeight = header.outerHeight(); const windowHeight = $(window).height();
var footerHeight = footer.outerHeight(); let contentHeight;
var windowHeight = $(window).height() - headerHeight - footerHeight; if (treeview)
content.css({height:windowHeight + "px"}); {
navtree.css({height:windowHeight + "px"}); const footerHeight = footer.outerHeight();
sidenav.css({height:windowHeight + "px"}); let navtreeHeight,sideNavHeight;
var width=$(window).width(); if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */
if (width!=collapsedWidth) { contentHeight = windowHeight - headerHeight - footerHeight;
if (width<desktop_vp && collapsedWidth>=desktop_vp) { navtreeHeight = contentHeight;
if (!collapsed) { sideNavHeight = contentHeight;
collapseExpand(); } else if (page_layout==1) { /* DISABLE_INDEX=YES */
} contentHeight = windowHeight - footerHeight;
} else if (width>desktop_vp && collapsedWidth<desktop_vp) { navtreeHeight = windowHeight - headerHeight;
if (collapsed) { sideNavHeight = windowHeight;
collapseExpand();
}
} }
collapsedWidth=width; navtree.css({height:navtreeHeight + "px"});
sidenav.css({height:sideNavHeight + "px"});
} }
else
{
contentHeight = windowHeight - headerHeight;
}
content.css({height:contentHeight + "px"});
if (location.hash.slice(1)) { if (location.hash.slice(1)) {
(document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView();
} }
} }
function collapseExpand() function collapseExpand() {
{ let newWidth;
if (sidenav.width()>0) { if (sidenav.width()>0) {
restoreWidth(0); newWidth=0;
collapsed=true; } else {
} const width = Cookie.readSetting(RESIZE_COOKIE_NAME,180);
else { newWidth = (width>180 && width<$(window).width()) ? width : 180;
var width = readCookie('width');
if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); }
collapsed=false;
} }
restoreWidth(newWidth);
const sidenavWidth = $(sidenav).outerWidth();
Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth);
} }
header = $("#top"); header = $("#top");
sidenav = $("#side-nav");
content = $("#doc-content"); content = $("#doc-content");
navtree = $("#nav-tree");
footer = $("#nav-path"); footer = $("#nav-path");
$(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); sidenav = $("#side-nav");
$(sidenav).resizable({ minWidth: 0 }); if (!treeview) {
$(window).resize(function() { resizeHeight(); }); // title = $("#titlearea");
var device = navigator.userAgent.toLowerCase(); // titleH = $(title).height();
var touch_device = device.match(/(iphone|ipod|ipad|android)/); // let animating = false;
if (touch_device) { /* wider split bar for touch only devices */ // content.on("scroll", function() {
$(sidenav).css({ paddingRight:'20px' }); // slideOpts = { duration: 200,
$('.ui-resizable-e').css({ width:'20px' }); // step: function() {
$('#nav-sync').css({ right:'34px' }); // contentHeight = $(window).height() - header.outerHeight();
barWidth=20; // content.css({ height : contentHeight + "px" });
// },
// done: function() { animating=false; }
// };
// if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) {
// title.slideUp(slideOpts);
// animating=true;
// } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) {
// title.slideDown(slideOpts);
// animating=true;
// }
// });
} else {
navtree = $("#nav-tree");
$(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } });
$(sidenav).resizable({ minWidth: 0 });
} }
var width = readCookie('width'); $(window).resize(function() { resizeHeight(treeview); });
if (width) { restoreWidth(width); } else { resizeWidth(); } if (treeview)
resizeHeight(); {
var url = location.href; const device = navigator.userAgent.toLowerCase();
var i=url.indexOf("#"); const touch_device = device.match(/(iphone|ipod|ipad|android)/);
if (touch_device) { /* wider split bar for touch only devices */
$(sidenav).css({ paddingRight:'20px' });
$('.ui-resizable-e').css({ width:'20px' });
$('#nav-sync').css({ right:'34px' });
barWidth=20;
}
const width = Cookie.readSetting(RESIZE_COOKIE_NAME,180);
if (width) { restoreWidth(width); } else { resizeWidth(); }
}
resizeHeight(treeview);
const url = location.href;
const i=url.indexOf("#");
if (i>=0) window.location.hash=url.substr(i); if (i>=0) window.location.hash=url.substr(i);
var _preventDefault = function(evt) { evt.preventDefault(); }; const _preventDefault = function(evt) { evt.preventDefault(); };
$("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); if (treeview)
$(".ui-resizable-handle").dblclick(collapseExpand); {
$(window).on('load',resizeHeight); $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault);
$(".ui-resizable-handle").dblclick(collapseExpand);
// workaround for firefox
$("body").css({overflow: "hidden"});
}
$(window).on('load',function() { resizeHeight(treeview); });
} }
/* @license-end */ /* @license-end */

View file

@ -1,4 +1,6 @@
var searchData= var searchData=
[ [
['aligned_20allocation_1',['Aligned Allocation',['../group__aligned.html',1,'']]] ['aligned_20allocation_0',['Aligned Allocation',['../group__aligned.html',1,'']]],
['allocation_1',['Allocation',['../group__aligned.html',1,'Aligned Allocation'],['../group__malloc.html',1,'Basic Allocation'],['../group__heap.html',1,'Heap Allocation']]],
['allocation_2',['Zero initialized re-allocation',['../group__zeroinit.html',1,'']]]
]; ];

4
docs/search/all_10.js Normal file
View file

@ -0,0 +1,4 @@
var searchData=
[
['zero_20initialized_20re_20allocation_0',['Zero initialized re-allocation',['../group__zeroinit.html',1,'']]]
];

View file

@ -1,7 +1,7 @@
var searchData= var searchData=
[ [
['basic_20allocation_2',['Basic Allocation',['../group__malloc.html',1,'']]], ['basic_20allocation_0',['Basic Allocation',['../group__malloc.html',1,'']]],
['block_5fsize_3',['block_size',['../group__analysis.html#a332a6c14d736a99699d5453a1cb04b41',1,'mi_heap_area_t']]], ['block_5fsize_1',['block_size',['../group__analysis.html#a332a6c14d736a99699d5453a1cb04b41',1,'mi_heap_area_t']]],
['blocks_4',['blocks',['../group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8',1,'mi_heap_area_t']]], ['blocks_2',['blocks',['../group__analysis.html#ae0085e6e1cf059a4eb7767e30e9991b8',1,'mi_heap_area_t']]],
['building_5',['Building',['../build.html',1,'']]] ['building_3',['Building',['../build.html',1,'']]]
]; ];

View file

@ -1,5 +1,5 @@
var searchData= var searchData=
[ [
['c_2b_2b_20wrappers_6',['C++ wrappers',['../group__cpp.html',1,'']]], ['c_20wrappers_0',['C++ wrappers',['../group__cpp.html',1,'']]],
['committed_7',['committed',['../group__analysis.html#ab47526df656d8837ec3e97f11b83f835',1,'mi_heap_area_t']]] ['committed_1',['committed',['../group__analysis.html#ab47526df656d8837ec3e97f11b83f835',1,'mi_heap_area_t']]]
]; ];

View file

@ -1,5 +1,5 @@
var searchData= var searchData=
[ [
['environment_20options_8',['Environment Options',['../environment.html',1,'']]], ['environment_20options_0',['Environment Options',['../environment.html',1,'']]],
['extended_20functions_9',['Extended Functions',['../group__extended.html',1,'']]] ['extended_20functions_1',['Extended Functions',['../group__extended.html',1,'']]]
]; ];

View file

@ -1,5 +1,5 @@
var searchData= var searchData=
[ [
['heap_20allocation_10',['Heap Allocation',['../group__heap.html',1,'']]], ['full_5fblock_5fsize_0',['full_block_size',['../group__analysis.html#ab53664e31d7fe2564f8d42041ef75cb3',1,'mi_heap_area_t']]],
['heap_20introspection_11',['Heap Introspection',['../group__analysis.html',1,'']]] ['functions_1',['Extended Functions',['../group__extended.html',1,'']]]
]; ];

View file

@ -1,153 +1,6 @@
var searchData= var searchData=
[ [
['mi_5f_5fposix_5fmemalign_12',['mi__posix_memalign',['../group__posix.html#gad5a69c8fea96aa2b7a7c818c2130090a',1,'mimalloc-doc.h']]], ['heap_20allocation_0',['Heap Allocation',['../group__heap.html',1,'']]],
['mi_5faligned_5falloc_13',['mi_aligned_alloc',['../group__posix.html#ga1326d2e4388630b5f81ca7206318b8e5',1,'mimalloc-doc.h']]], ['heap_20introspection_1',['Heap Introspection',['../group__analysis.html',1,'']]],
['mi_5falignment_5fmax_14',['MI_ALIGNMENT_MAX',['../group__aligned.html#ga83c03016066b438f51a8095e9140be06',1,'mimalloc-doc.h']]], ['heap_5ftag_2',['heap_tag',['../group__analysis.html#a2b7a0c92ece8daf46b558efc990ebdc1',1,'mi_heap_area_t']]]
['mi_5fblock_5fvisit_5ffun_15',['mi_block_visit_fun',['../group__analysis.html#gadfa01e2900f0e5d515ad5506b26f6d65',1,'mimalloc-doc.h']]],
['mi_5fcalloc_16',['mi_calloc',['../group__malloc.html#ga97fedb4f7107c592fd7f0f0a8949a57d',1,'mimalloc-doc.h']]],
['mi_5fcalloc_5faligned_17',['mi_calloc_aligned',['../group__aligned.html#ga53dddb4724042a90315b94bc268fb4c9',1,'mimalloc-doc.h']]],
['mi_5fcalloc_5faligned_5fat_18',['mi_calloc_aligned_at',['../group__aligned.html#ga08647c4593f3b2eef24a919a73eba3a3',1,'mimalloc-doc.h']]],
['mi_5fcalloc_5ftp_19',['mi_calloc_tp',['../group__typed.html#gae80c47c9d4cab10961fff1a8ac98fc07',1,'mimalloc-doc.h']]],
['mi_5fcfree_20',['mi_cfree',['../group__posix.html#ga705dc7a64bffacfeeb0141501a5c35d7',1,'mimalloc-doc.h']]],
['mi_5fcheck_5fowned_21',['mi_check_owned',['../group__analysis.html#ga628c237489c2679af84a4d0d143b3dd5',1,'mimalloc-doc.h']]],
['mi_5fcollect_22',['mi_collect',['../group__extended.html#ga421430e2226d7d468529cec457396756',1,'mimalloc-doc.h']]],
['mi_5fdeferred_5ffree_5ffun_23',['mi_deferred_free_fun',['../group__extended.html#ga299dae78d25ce112e384a98b7309c5be',1,'mimalloc-doc.h']]],
['mi_5ferror_5ffun_24',['mi_error_fun',['../group__extended.html#ga251d369cda3f1c2a955c555486ed90e5',1,'mimalloc-doc.h']]],
['mi_5fexpand_25',['mi_expand',['../group__malloc.html#gaaee66a1d483c3e28f585525fb96707e4',1,'mimalloc-doc.h']]],
['mi_5ffree_26',['mi_free',['../group__malloc.html#gaf2c7b89c327d1f60f59e68b9ea644d95',1,'mimalloc-doc.h']]],
['mi_5ffree_5faligned_27',['mi_free_aligned',['../group__posix.html#ga0d28d5cf61e6bfbb18c63092939fe5c9',1,'mimalloc-doc.h']]],
['mi_5ffree_5fsize_28',['mi_free_size',['../group__posix.html#gae01389eedab8d67341ff52e2aad80ebb',1,'mimalloc-doc.h']]],
['mi_5ffree_5fsize_5faligned_29',['mi_free_size_aligned',['../group__posix.html#ga72e9d7ffb5fe94d69bc722c8506e27bc',1,'mimalloc-doc.h']]],
['mi_5fgood_5fsize_30',['mi_good_size',['../group__extended.html#gac057927cd06c854b45fe7847e921bd47',1,'mimalloc-doc.h']]],
['mi_5fheap_5farea_5ft_31',['mi_heap_area_t',['../group__analysis.html#structmi__heap__area__t',1,'']]],
['mi_5fheap_5fcalloc_32',['mi_heap_calloc',['../group__heap.html#gaa6702b3c48e9e53e50e81b36f5011d55',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcalloc_5faligned_33',['mi_heap_calloc_aligned',['../group__heap.html#ga4af03a6e2b93fae77424d93f889705c3',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcalloc_5faligned_5fat_34',['mi_heap_calloc_aligned_at',['../group__heap.html#ga08ca6419a5c057a4d965868998eef487',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcalloc_5ftp_35',['mi_heap_calloc_tp',['../group__typed.html#ga4e5d1f1707c90e5f55e023ac5f45fe74',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcheck_5fowned_36',['mi_heap_check_owned',['../group__analysis.html#ga0d67c1789faaa15ff366c024fcaf6377',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcollect_37',['mi_heap_collect',['../group__heap.html#ga7922f7495cde30b1984d0e6072419298',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcontains_5fblock_38',['mi_heap_contains_block',['../group__analysis.html#gaa862aa8ed8d57d84cae41fc1022d71af',1,'mimalloc-doc.h']]],
['mi_5fheap_5fdelete_39',['mi_heap_delete',['../group__heap.html#ga2ab1af8d438819b55319c7ef51d1e409',1,'mimalloc-doc.h']]],
['mi_5fheap_5fdestroy_40',['mi_heap_destroy',['../group__heap.html#ga9f9c0844edb9717f4feacd79116b8e0d',1,'mimalloc-doc.h']]],
['mi_5fheap_5fget_5fbacking_41',['mi_heap_get_backing',['../group__heap.html#ga5d03fbe062ffcf38f0f417fd968357fc',1,'mimalloc-doc.h']]],
['mi_5fheap_5fget_5fdefault_42',['mi_heap_get_default',['../group__heap.html#ga8db4cbb87314a989a9a187464d6b5e05',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmalloc_43',['mi_heap_malloc',['../group__heap.html#ga9cbed01e42c0647907295de92c3fa296',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmalloc_5faligned_44',['mi_heap_malloc_aligned',['../group__heap.html#gab5b87e1805306f70df38789fcfcf6653',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmalloc_5faligned_5fat_45',['mi_heap_malloc_aligned_at',['../group__heap.html#ga23acd7680fb0976dde3783254c6c874b',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmalloc_5fsmall_46',['mi_heap_malloc_small',['../group__heap.html#gaa1a1c7a1f4da6826b5a25b70ef878368',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmalloc_5ftp_47',['mi_heap_malloc_tp',['../group__typed.html#ga653bcb24ac495bc19940ecd6898f9cd7',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmallocn_48',['mi_heap_mallocn',['../group__heap.html#ga851da6c43fe0b71c1376cee8aef90db0',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmallocn_5ftp_49',['mi_heap_mallocn_tp',['../group__typed.html#ga6b75cb9c4b9c647661d0924552dc6e83',1,'mimalloc-doc.h']]],
['mi_5fheap_5fnew_50',['mi_heap_new',['../group__heap.html#ga766f672ba56f2fbfeb9d9dbb0b7f6b11',1,'mimalloc-doc.h']]],
['mi_5fheap_5frealloc_51',['mi_heap_realloc',['../group__heap.html#gaaef3395f66be48f37bdc8322509c5d81',1,'mimalloc-doc.h']]],
['mi_5fheap_5frealloc_5faligned_52',['mi_heap_realloc_aligned',['../group__heap.html#gafc603b696bd14cae6da28658f950d98c',1,'mimalloc-doc.h']]],
['mi_5fheap_5frealloc_5faligned_5fat_53',['mi_heap_realloc_aligned_at',['../group__heap.html#gaf96c788a1bf553fe2d371de9365e047c',1,'mimalloc-doc.h']]],
['mi_5fheap_5freallocf_54',['mi_heap_reallocf',['../group__heap.html#ga4a21070eb4e7cce018133c8d5f4b0527',1,'mimalloc-doc.h']]],
['mi_5fheap_5freallocn_55',['mi_heap_reallocn',['../group__heap.html#gac74e94ad9b0c9b57c1c4d88b8825b7a8',1,'mimalloc-doc.h']]],
['mi_5fheap_5freallocn_5ftp_56',['mi_heap_reallocn_tp',['../group__typed.html#gaf213d5422ec35e7f6caad827c79bc948',1,'mimalloc-doc.h']]],
['mi_5fheap_5frealpath_57',['mi_heap_realpath',['../group__heap.html#ga00e95ba1e01acac3cfd95bb7a357a6f0',1,'mimalloc-doc.h']]],
['mi_5fheap_5frecalloc_58',['mi_heap_recalloc',['../group__zeroinit.html#ga8648c5fbb22a80f0262859099f06dfbd',1,'mimalloc-doc.h']]],
['mi_5fheap_5frecalloc_5faligned_59',['mi_heap_recalloc_aligned',['../group__zeroinit.html#ga9f3f999396c8f77ca5e80e7b40ac29e3',1,'mimalloc-doc.h']]],
['mi_5fheap_5frecalloc_5faligned_5fat_60',['mi_heap_recalloc_aligned_at',['../group__zeroinit.html#ga496452c96f1de8c500be9fddf52edaf7',1,'mimalloc-doc.h']]],
['mi_5fheap_5frecalloc_5ftp_61',['mi_heap_recalloc_tp',['../group__typed.html#ga3e50a1600958fcaf1a7f3560c9174f9e',1,'mimalloc-doc.h']]],
['mi_5fheap_5frezalloc_62',['mi_heap_rezalloc',['../group__zeroinit.html#gacfad83f14eb5d6a42a497a898e19fc76',1,'mimalloc-doc.h']]],
['mi_5fheap_5frezalloc_5faligned_63',['mi_heap_rezalloc_aligned',['../group__zeroinit.html#ga375fa8a611c51905e592d5d467c49664',1,'mimalloc-doc.h']]],
['mi_5fheap_5frezalloc_5faligned_5fat_64',['mi_heap_rezalloc_aligned_at',['../group__zeroinit.html#gac90da54fa7e5d10bdc97ce0b51dce2eb',1,'mimalloc-doc.h']]],
['mi_5fheap_5fset_5fdefault_65',['mi_heap_set_default',['../group__heap.html#gab8631ec88c8d26641b68b5d25dcd4422',1,'mimalloc-doc.h']]],
['mi_5fheap_5fstrdup_66',['mi_heap_strdup',['../group__heap.html#ga139d6b09dbf50c3c2523d0f4d1cfdeb5',1,'mimalloc-doc.h']]],
['mi_5fheap_5fstrndup_67',['mi_heap_strndup',['../group__heap.html#ga8e3dbd46650dd26573cf307a2c8f1f5a',1,'mimalloc-doc.h']]],
['mi_5fheap_5ft_68',['mi_heap_t',['../group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2',1,'mimalloc-doc.h']]],
['mi_5fheap_5fvisit_5fblocks_69',['mi_heap_visit_blocks',['../group__analysis.html#ga70c46687dc6e9dc98b232b02646f8bed',1,'mimalloc-doc.h']]],
['mi_5fheap_5fzalloc_70',['mi_heap_zalloc',['../group__heap.html#ga903104592c8ed53417a3762da6241133',1,'mimalloc-doc.h']]],
['mi_5fheap_5fzalloc_5faligned_71',['mi_heap_zalloc_aligned',['../group__heap.html#gaa450a59c6c7ae5fdbd1c2b80a8329ef0',1,'mimalloc-doc.h']]],
['mi_5fheap_5fzalloc_5faligned_5fat_72',['mi_heap_zalloc_aligned_at',['../group__heap.html#ga45fb43a62776fbebbdf1edd99b527954',1,'mimalloc-doc.h']]],
['mi_5fheap_5fzalloc_5ftp_73',['mi_heap_zalloc_tp',['../group__typed.html#gad6e87e86e994aa14416ae9b5d4c188fe',1,'mimalloc-doc.h']]],
['mi_5fis_5fin_5fheap_5fregion_74',['mi_is_in_heap_region',['../group__extended.html#ga5f071b10d4df1c3658e04e7fd67a94e6',1,'mimalloc-doc.h']]],
['mi_5fis_5fredirected_75',['mi_is_redirected',['../group__extended.html#gaad25050b19f30cd79397b227e0157a3f',1,'mimalloc-doc.h']]],
['mi_5fmalloc_76',['mi_malloc',['../group__malloc.html#ga3406e8b168bc74c8637b11571a6da83a',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5faligned_77',['mi_malloc_aligned',['../group__aligned.html#ga68930196751fa2cca9e1fd0d71bade56',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5faligned_5fat_78',['mi_malloc_aligned_at',['../group__aligned.html#ga5850da130c936bd77db039dcfbc8295d',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5fsize_79',['mi_malloc_size',['../group__posix.html#ga4531c9e775bb3ae12db57c1ba8a5d7de',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5fsmall_80',['mi_malloc_small',['../group__extended.html#ga7136c2e55cb22c98ecf95d08d6debb99',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5ftp_81',['mi_malloc_tp',['../group__typed.html#ga0619a62c5fd886f1016030abe91f0557',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5fusable_5fsize_82',['mi_malloc_usable_size',['../group__posix.html#ga06d07cf357bbac5c73ba5d0c0c421e17',1,'mimalloc-doc.h']]],
['mi_5fmallocn_83',['mi_mallocn',['../group__malloc.html#ga0b05e2bf0f73e7401ae08597ff782ac6',1,'mimalloc-doc.h']]],
['mi_5fmallocn_5ftp_84',['mi_mallocn_tp',['../group__typed.html#gae5cb6e0fafc9f23169c5622e077afe8b',1,'mimalloc-doc.h']]],
['mi_5fmanage_5fos_5fmemory_85',['mi_manage_os_memory',['../group__extended.html#ga4c6486a1fdcd7a423b5f25fe4be8e0cf',1,'mimalloc-doc.h']]],
['mi_5fmemalign_86',['mi_memalign',['../group__posix.html#gaab7fa71ea93b96873f5d9883db57d40e',1,'mimalloc-doc.h']]],
['mi_5fnew_87',['mi_new',['../group__cpp.html#gaad048a9fce3d02c5909cd05c6ec24545',1,'mimalloc-doc.h']]],
['mi_5fnew_5faligned_88',['mi_new_aligned',['../group__cpp.html#gaef2c2bdb4f70857902d3c8903ac095f3',1,'mimalloc-doc.h']]],
['mi_5fnew_5faligned_5fnothrow_89',['mi_new_aligned_nothrow',['../group__cpp.html#gab5e29558926d934c3f1cae8c815f942c',1,'mimalloc-doc.h']]],
['mi_5fnew_5fn_90',['mi_new_n',['../group__cpp.html#gae7bc4f56cd57ed3359060ff4f38bda81',1,'mimalloc-doc.h']]],
['mi_5fnew_5fnothrow_91',['mi_new_nothrow',['../group__cpp.html#gaeaded64eda71ed6b1d569d3e723abc4a',1,'mimalloc-doc.h']]],
['mi_5fnew_5frealloc_92',['mi_new_realloc',['../group__cpp.html#gaab78a32f55149e9fbf432d5288e38e1e',1,'mimalloc-doc.h']]],
['mi_5fnew_5freallocn_93',['mi_new_reallocn',['../group__cpp.html#ga756f4b2bc6a7ecd0a90baea8e90c7907',1,'mimalloc-doc.h']]],
['mi_5foption_5fdisable_94',['mi_option_disable',['../group__options.html#gaebf6ff707a2e688ebb1a2296ca564054',1,'mimalloc-doc.h']]],
['mi_5foption_5feager_5fcommit_95',['mi_option_eager_commit',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca1e8de72c93da7ff22d91e1e27b52ac2b',1,'mimalloc-doc.h']]],
['mi_5foption_5feager_5fcommit_5fdelay_96',['mi_option_eager_commit_delay',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca17a190c25be381142d87e0468c4c068c',1,'mimalloc-doc.h']]],
['mi_5foption_5feager_5fregion_5fcommit_97',['mi_option_eager_region_commit',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca32ce97ece29f69e82579679cf8a307ad',1,'mimalloc-doc.h']]],
['mi_5foption_5fenable_98',['mi_option_enable',['../group__options.html#ga04180ae41b0d601421dd62ced40ca050',1,'mimalloc-doc.h']]],
['mi_5foption_5fget_99',['mi_option_get',['../group__options.html#ga7e8af195cc81d3fa64ccf2662caa565a',1,'mimalloc-doc.h']]],
['mi_5foption_5fis_5fenabled_100',['mi_option_is_enabled',['../group__options.html#ga459ad98f18b3fc9275474807fe0ca188',1,'mimalloc-doc.h']]],
['mi_5foption_5flarge_5fos_5fpages_101',['mi_option_large_os_pages',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4192d491200d0055df0554d4cf65054e',1,'mimalloc-doc.h']]],
['mi_5foption_5fos_5ftag_102',['mi_option_os_tag',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4b74ae2a69e445de6c2361b73c1d14bf',1,'mimalloc-doc.h']]],
['mi_5foption_5fpage_5freset_103',['mi_option_page_reset',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cada854dd272c66342f18a93ee254a2968',1,'mimalloc-doc.h']]],
['mi_5foption_5freserve_5fhuge_5fos_5fpages_104',['mi_option_reserve_huge_os_pages',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caca7ed041be3b0b9d0b82432c7bf41af2',1,'mimalloc-doc.h']]],
['mi_5foption_5freserve_5fhuge_5fos_5fpages_5fat_105',['mi_option_reserve_huge_os_pages_at',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa13e7926d4339d2aa6fbf61d4473fd5c',1,'mimalloc-doc.h']]],
['mi_5foption_5freset_5fdecommits_106',['mi_option_reset_decommits',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cac81ee965b130fa81238913a3c239d536',1,'mimalloc-doc.h']]],
['mi_5foption_5freset_5fdelay_107',['mi_option_reset_delay',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca154fe170131d5212cff57e22b99523c5',1,'mimalloc-doc.h']]],
['mi_5foption_5fsegment_5fcache_108',['mi_option_segment_cache',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca2ecbe7ef32f5c84de3739aa4f0b805a1',1,'mimalloc-doc.h']]],
['mi_5foption_5fsegment_5freset_109',['mi_option_segment_reset',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafb121d30d87591850d5410ccc3a95c6d',1,'mimalloc-doc.h']]],
['mi_5foption_5fset_110',['mi_option_set',['../group__options.html#gaf84921c32375e25754dc2ee6a911fa60',1,'mimalloc-doc.h']]],
['mi_5foption_5fset_5fdefault_111',['mi_option_set_default',['../group__options.html#ga7ef623e440e6e5545cb08c94e71e4b90',1,'mimalloc-doc.h']]],
['mi_5foption_5fset_5fenabled_112',['mi_option_set_enabled',['../group__options.html#ga9a13d05fcb77489cb06d4d017ebd8bed',1,'mimalloc-doc.h']]],
['mi_5foption_5fset_5fenabled_5fdefault_113',['mi_option_set_enabled_default',['../group__options.html#ga65518b69ec5d32336b50e07f74b3f629',1,'mimalloc-doc.h']]],
['mi_5foption_5fshow_5ferrors_114',['mi_option_show_errors',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4822e5c00732c5984b32a032837f0',1,'mimalloc-doc.h']]],
['mi_5foption_5fshow_5fstats_115',['mi_option_show_stats',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0957ef73b2550764b4840edf48422fda',1,'mimalloc-doc.h']]],
['mi_5foption_5ft_116',['mi_option_t',['../group__options.html#gafebf7ed116adb38ae5218bc3ce06884c',1,'mimalloc-doc.h']]],
['mi_5foption_5fuse_5fnuma_5fnodes_117',['mi_option_use_numa_nodes',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0ac33a18f6b659fcfaf44efb0bab1b74',1,'mimalloc-doc.h']]],
['mi_5foption_5fverbose_118',['mi_option_verbose',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7c8b7bf5281c581bad64f5daa6442777',1,'mimalloc-doc.h']]],
['mi_5foutput_5ffun_119',['mi_output_fun',['../group__extended.html#gad823d23444a4b77a40f66bf075a98a0c',1,'mimalloc-doc.h']]],
['mi_5fposix_5fmemalign_120',['mi_posix_memalign',['../group__posix.html#gacff84f226ba9feb2031b8992e5579447',1,'mimalloc-doc.h']]],
['mi_5fprocess_5finfo_121',['mi_process_info',['../group__extended.html#ga7d862c2affd5790381da14eb102a364d',1,'mimalloc-doc.h']]],
['mi_5fpvalloc_122',['mi_pvalloc',['../group__posix.html#gaeb325c39b887d3b90d85d1eb1712fb1e',1,'mimalloc-doc.h']]],
['mi_5frealloc_123',['mi_realloc',['../group__malloc.html#gaf11eb497da57bdfb2de65eb191c69db6',1,'mimalloc-doc.h']]],
['mi_5frealloc_5faligned_124',['mi_realloc_aligned',['../group__aligned.html#ga4028d1cf4aa4c87c880747044a8322ae',1,'mimalloc-doc.h']]],
['mi_5frealloc_5faligned_5fat_125',['mi_realloc_aligned_at',['../group__aligned.html#gaf66a9ae6c6f08bd6be6fb6ea771faffb',1,'mimalloc-doc.h']]],
['mi_5freallocarr_126',['mi_reallocarr',['../group__posix.html#ga7e1934d60a3e697950eeb48e042bfad5',1,'mimalloc-doc.h']]],
['mi_5freallocarray_127',['mi_reallocarray',['../group__posix.html#ga48fad8648a2f1dab9c87ea9448a52088',1,'mimalloc-doc.h']]],
['mi_5freallocf_128',['mi_reallocf',['../group__malloc.html#gafe68ac7c5e24a65cd55c9d6b152211a0',1,'mimalloc-doc.h']]],
['mi_5freallocn_129',['mi_reallocn',['../group__malloc.html#ga61d57b4144ba24fba5c1e9b956d13853',1,'mimalloc-doc.h']]],
['mi_5freallocn_5ftp_130',['mi_reallocn_tp',['../group__typed.html#ga1158b49a55dfa81f58a4426a7578f523',1,'mimalloc-doc.h']]],
['mi_5frealpath_131',['mi_realpath',['../group__malloc.html#ga08cec32dd5bbe7da91c78d19f1b5bebe',1,'mimalloc-doc.h']]],
['mi_5frecalloc_132',['mi_recalloc',['../group__malloc.html#ga23a0fbb452b5dce8e31fab1a1958cacc',1,'mimalloc-doc.h']]],
['mi_5frecalloc_5faligned_133',['mi_recalloc_aligned',['../group__zeroinit.html#ga3e7e5c291acf1c7fd7ffd9914a9f945f',1,'mimalloc-doc.h']]],
['mi_5frecalloc_5faligned_5fat_134',['mi_recalloc_aligned_at',['../group__zeroinit.html#ga4ff5e92ad73585418a072c9d059e5cf9',1,'mimalloc-doc.h']]],
['mi_5fregister_5fdeferred_5ffree_135',['mi_register_deferred_free',['../group__extended.html#ga3460a6ca91af97be4058f523d3cb8ece',1,'mimalloc-doc.h']]],
['mi_5fregister_5ferror_136',['mi_register_error',['../group__extended.html#gaa1d55e0e894be240827e5d87ec3a1f45',1,'mimalloc-doc.h']]],
['mi_5fregister_5foutput_137',['mi_register_output',['../group__extended.html#gae5b17ff027cd2150b43a33040250cf3f',1,'mimalloc-doc.h']]],
['mi_5freserve_5fhuge_5fos_5fpages_5fat_138',['mi_reserve_huge_os_pages_at',['../group__extended.html#ga7795a13d20087447281858d2c771cca1',1,'mimalloc-doc.h']]],
['mi_5freserve_5fhuge_5fos_5fpages_5finterleave_139',['mi_reserve_huge_os_pages_interleave',['../group__extended.html#ga3132f521fb756fc0e8ec0b74fb58df50',1,'mimalloc-doc.h']]],
['mi_5freserve_5fos_5fmemory_140',['mi_reserve_os_memory',['../group__extended.html#ga00ec3324b6b2591c7fe3677baa30a767',1,'mimalloc-doc.h']]],
['mi_5frezalloc_141',['mi_rezalloc',['../group__zeroinit.html#ga8c292e142110229a2980b37ab036dbc6',1,'mimalloc-doc.h']]],
['mi_5frezalloc_5faligned_142',['mi_rezalloc_aligned',['../group__zeroinit.html#gacd71a7bce96aab38ae6de17af2eb2cf0',1,'mimalloc-doc.h']]],
['mi_5frezalloc_5faligned_5fat_143',['mi_rezalloc_aligned_at',['../group__zeroinit.html#gae8b358c417e61d5307da002702b0a8e1',1,'mimalloc-doc.h']]],
['mi_5fsmall_5fsize_5fmax_144',['MI_SMALL_SIZE_MAX',['../group__extended.html#ga1ea64283508718d9d645c38efc2f4305',1,'mimalloc-doc.h']]],
['mi_5fstats_5fmerge_145',['mi_stats_merge',['../group__extended.html#ga854b1de8cb067c7316286c28b2fcd3d1',1,'mimalloc-doc.h']]],
['mi_5fstats_5fprint_146',['mi_stats_print',['../group__extended.html#ga2d126e5c62d3badc35445e5d84166df2',1,'mimalloc-doc.h']]],
['mi_5fstats_5fprint_5fout_147',['mi_stats_print_out',['../group__extended.html#ga537f13b299ddf801e49a5a94fde02c79',1,'mimalloc-doc.h']]],
['mi_5fstats_5freset_148',['mi_stats_reset',['../group__extended.html#ga3bb8468b8cfcc6e2a61d98aee85c5f99',1,'mimalloc-doc.h']]],
['mi_5fstl_5fallocator_149',['mi_stl_allocator',['../group__cpp.html#structmi__stl__allocator',1,'']]],
['mi_5fstrdup_150',['mi_strdup',['../group__malloc.html#gac7cffe13f1f458ed16789488bf92b9b2',1,'mimalloc-doc.h']]],
['mi_5fstrndup_151',['mi_strndup',['../group__malloc.html#gaaabf971c2571891433477e2d21a35266',1,'mimalloc-doc.h']]],
['mi_5fthread_5fdone_152',['mi_thread_done',['../group__extended.html#ga0ae4581e85453456a0d658b2b98bf7bf',1,'mimalloc-doc.h']]],
['mi_5fthread_5finit_153',['mi_thread_init',['../group__extended.html#gaf8e73efc2cbca9ebfdfb166983a04c17',1,'mimalloc-doc.h']]],
['mi_5fthread_5fstats_5fprint_5fout_154',['mi_thread_stats_print_out',['../group__extended.html#gab1dac8476c46cb9eecab767eb40c1525',1,'mimalloc-doc.h']]],
['mi_5fusable_5fsize_155',['mi_usable_size',['../group__extended.html#ga089c859d9eddc5f9b4bd946cd53cebee',1,'mimalloc-doc.h']]],
['mi_5fvalloc_156',['mi_valloc',['../group__posix.html#ga73baaf5951f5165ba0763d0c06b6a93b',1,'mimalloc-doc.h']]],
['mi_5fzalloc_157',['mi_zalloc',['../group__malloc.html#gafdd9d8bb2986e668ba9884f28af38000',1,'mimalloc-doc.h']]],
['mi_5fzalloc_5faligned_158',['mi_zalloc_aligned',['../group__aligned.html#ga0cadbcf5b89a7b6fb171bc8df8734819',1,'mimalloc-doc.h']]],
['mi_5fzalloc_5faligned_5fat_159',['mi_zalloc_aligned_at',['../group__aligned.html#ga5f8c2353766db522565e642fafd8a3f8',1,'mimalloc-doc.h']]],
['mi_5fzalloc_5fsmall_160',['mi_zalloc_small',['../group__extended.html#ga220f29f40a44404b0061c15bc1c31152',1,'mimalloc-doc.h']]],
['mi_5fzalloc_5ftp_161',['mi_zalloc_tp',['../group__typed.html#gac77a61bdaf680a803785fe307820b48c',1,'mimalloc-doc.h']]]
]; ];

View file

@ -1,4 +1,5 @@
var searchData= var searchData=
[ [
['overriding_20malloc_162',['Overriding Malloc',['../overrides.html',1,'']]] ['initialized_20re_20allocation_0',['Zero initialized re-allocation',['../group__zeroinit.html',1,'']]],
['introspection_1',['Heap Introspection',['../group__analysis.html',1,'']]]
]; ];

View file

@ -1,5 +1,4 @@
var searchData= var searchData=
[ [
['performance_163',['Performance',['../bench.html',1,'']]], ['library_0',['Using the library',['../using.html',1,'']]]
['posix_164',['Posix',['../group__posix.html',1,'']]]
]; ];

View file

@ -1,5 +1,192 @@
var searchData= var searchData=
[ [
['reserved_165',['reserved',['../group__analysis.html#ae848a3e6840414891035423948ca0383',1,'mi_heap_area_t']]], ['macros_0',['Typed Macros',['../group__typed.html',1,'']]],
['runtime_20options_166',['Runtime Options',['../group__options.html',1,'']]] ['malloc_1',['Overriding Malloc',['../overrides.html',1,'']]],
['malloc_2',['mi-malloc',['../index.html',1,'']]],
['mi_20malloc_3',['mi-malloc',['../index.html',1,'']]],
['mi_5f_5fexpand_4',['mi__expand',['../group__posix.html#ga66bcfeb4faedbb42b796bc680821ef84',1,'mimalloc-doc.h']]],
['mi_5f_5fposix_5fmemalign_5',['mi__posix_memalign',['../group__posix.html#gad5a69c8fea96aa2b7a7c818c2130090a',1,'mimalloc-doc.h']]],
['mi_5fabandoned_5fvisit_5fblocks_6',['mi_abandoned_visit_blocks',['../group__analysis.html#ga6a4865a887b2ec5247854af61562503c',1,'mimalloc-doc.h']]],
['mi_5faligned_5falloc_7',['mi_aligned_alloc',['../group__posix.html#ga430ed1513f0571ff83be00ec58a98ee0',1,'mimalloc-doc.h']]],
['mi_5faligned_5foffset_5frecalloc_8',['mi_aligned_offset_recalloc',['../group__posix.html#ga16570deddd559001b44953eedbad0084',1,'mimalloc-doc.h']]],
['mi_5faligned_5frecalloc_9',['mi_aligned_recalloc',['../group__posix.html#gaf82cbb4b4f24acf723348628451798d3',1,'mimalloc-doc.h']]],
['mi_5farena_5farea_10',['mi_arena_area',['../group__extended.html#ga9a25a00a22151619a0be91a10af7787f',1,'mimalloc-doc.h']]],
['mi_5farena_5fid_5ft_11',['mi_arena_id_t',['../group__extended.html#ga99fe38650d0b02e0e0f89ee024db91d3',1,'mimalloc-doc.h']]],
['mi_5fblock_5fvisit_5ffun_12',['mi_block_visit_fun',['../group__analysis.html#ga8255dc9371e6b299d9802a610c4e34ec',1,'mimalloc-doc.h']]],
['mi_5fcalloc_13',['mi_calloc',['../group__malloc.html#ga6686568014b54d1e6c7ac64a076e4f56',1,'mimalloc-doc.h']]],
['mi_5fcalloc_5faligned_14',['mi_calloc_aligned',['../group__aligned.html#ga424ef386fb1f9f8e0a86ab53f16eaaf1',1,'mimalloc-doc.h']]],
['mi_5fcalloc_5faligned_5fat_15',['mi_calloc_aligned_at',['../group__aligned.html#ga977f96bd2c5c141bcd70e6685c90d6c3',1,'mimalloc-doc.h']]],
['mi_5fcalloc_5ftp_16',['mi_calloc_tp',['../group__typed.html#gae80c47c9d4cab10961fff1a8ac98fc07',1,'mimalloc-doc.h']]],
['mi_5fcfree_17',['mi_cfree',['../group__posix.html#ga705dc7a64bffacfeeb0141501a5c35d7',1,'mimalloc-doc.h']]],
['mi_5fcheck_5fowned_18',['mi_check_owned',['../group__analysis.html#ga628c237489c2679af84a4d0d143b3dd5',1,'mimalloc-doc.h']]],
['mi_5fcollect_19',['mi_collect',['../group__extended.html#ga421430e2226d7d468529cec457396756',1,'mimalloc-doc.h']]],
['mi_5fdebug_5fshow_5farenas_20',['mi_debug_show_arenas',['../group__extended.html#gad7439207f8f71fb6c382a9ea20b997e7',1,'mimalloc-doc.h']]],
['mi_5fdeferred_5ffree_5ffun_21',['mi_deferred_free_fun',['../group__extended.html#ga292a45f7dbc7cd23c5352ce1f0002816',1,'mimalloc-doc.h']]],
['mi_5fdupenv_5fs_22',['mi_dupenv_s',['../group__posix.html#gab41369c1a1da7504013a7a0b1d4dd958',1,'mimalloc-doc.h']]],
['mi_5ferror_5ffun_23',['mi_error_fun',['../group__extended.html#ga83fc6a688b322261e1c2deab000b0591',1,'mimalloc-doc.h']]],
['mi_5fexpand_24',['mi_expand',['../group__malloc.html#ga19299856216cfbb08e2628593654dfb0',1,'mimalloc-doc.h']]],
['mi_5ffree_25',['mi_free',['../group__malloc.html#gaf2c7b89c327d1f60f59e68b9ea644d95',1,'mimalloc-doc.h']]],
['mi_5ffree_5faligned_26',['mi_free_aligned',['../group__posix.html#ga0d28d5cf61e6bfbb18c63092939fe5c9',1,'mimalloc-doc.h']]],
['mi_5ffree_5fsize_27',['mi_free_size',['../group__posix.html#gae01389eedab8d67341ff52e2aad80ebb',1,'mimalloc-doc.h']]],
['mi_5ffree_5fsize_5faligned_28',['mi_free_size_aligned',['../group__posix.html#ga72e9d7ffb5fe94d69bc722c8506e27bc',1,'mimalloc-doc.h']]],
['mi_5fgood_5fsize_29',['mi_good_size',['../group__extended.html#gac057927cd06c854b45fe7847e921bd47',1,'mimalloc-doc.h']]],
['mi_5fheap_5farea_5ft_30',['mi_heap_area_t',['../group__analysis.html#structmi__heap__area__t',1,'']]],
['mi_5fheap_5fcalloc_31',['mi_heap_calloc',['../group__heap.html#gac0098aaf231d3e9586c73136d5df95da',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcalloc_5faligned_32',['mi_heap_calloc_aligned',['../group__heap.html#gacafcc26df827c7a7de5e850217566108',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcalloc_5faligned_5fat_33',['mi_heap_calloc_aligned_at',['../group__heap.html#gaa42ec2079989c4374f2c331d9b35f4e4',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcalloc_5ftp_34',['mi_heap_calloc_tp',['../group__typed.html#ga4e5d1f1707c90e5f55e023ac5f45fe74',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcheck_5fowned_35',['mi_heap_check_owned',['../group__analysis.html#ga0d67c1789faaa15ff366c024fcaf6377',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcollect_36',['mi_heap_collect',['../group__heap.html#ga7922f7495cde30b1984d0e6072419298',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcontains_5fblock_37',['mi_heap_contains_block',['../group__analysis.html#gaa862aa8ed8d57d84cae41fc1022d71af',1,'mimalloc-doc.h']]],
['mi_5fheap_5fdelete_38',['mi_heap_delete',['../group__heap.html#ga2ab1af8d438819b55319c7ef51d1e409',1,'mimalloc-doc.h']]],
['mi_5fheap_5fdestroy_39',['mi_heap_destroy',['../group__heap.html#ga9f9c0844edb9717f4feacd79116b8e0d',1,'mimalloc-doc.h']]],
['mi_5fheap_5fget_5fbacking_40',['mi_heap_get_backing',['../group__heap.html#gac6ac9f0e7be9ab4ff70acfc8dad1235a',1,'mimalloc-doc.h']]],
['mi_5fheap_5fget_5fdefault_41',['mi_heap_get_default',['../group__heap.html#ga14c667a6e2c5d28762d8cb7d4e057909',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmalloc_42',['mi_heap_malloc',['../group__heap.html#gab374e206c7034e0d899fb934e4f4a863',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmalloc_5faligned_43',['mi_heap_malloc_aligned',['../group__heap.html#ga33f4f05b7fea7af2113c62a4bf882cc5',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmalloc_5faligned_5fat_44',['mi_heap_malloc_aligned_at',['../group__heap.html#gae7ffc045c3996497a7f3a5f6fe7b8aaa',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmalloc_5fsmall_45',['mi_heap_malloc_small',['../group__heap.html#ga012c5c8abe22b10043de39ff95909541',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmalloc_5ftp_46',['mi_heap_malloc_tp',['../group__typed.html#ga653bcb24ac495bc19940ecd6898f9cd7',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmallocn_47',['mi_heap_mallocn',['../group__heap.html#gab0f755c0b21c387fe8e9024200faa372',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmallocn_5ftp_48',['mi_heap_mallocn_tp',['../group__typed.html#ga6b75cb9c4b9c647661d0924552dc6e83',1,'mimalloc-doc.h']]],
['mi_5fheap_5fnew_49',['mi_heap_new',['../group__heap.html#gaa718bb226ec0546ba6d1b6cb32179f3a',1,'mimalloc-doc.h']]],
['mi_5fheap_5fnew_5fex_50',['mi_heap_new_ex',['../group__extended.html#ga3ae360583f4351aa5267ee7e43008faf',1,'mimalloc-doc.h']]],
['mi_5fheap_5fnew_5fin_5farena_51',['mi_heap_new_in_arena',['../group__extended.html#gaaf2d9976576d5efd5544be12848af949',1,'mimalloc-doc.h']]],
['mi_5fheap_5frealloc_52',['mi_heap_realloc',['../group__heap.html#gac5252d6a2e510bd349e4fcb452e6a93a',1,'mimalloc-doc.h']]],
['mi_5fheap_5frealloc_5faligned_53',['mi_heap_realloc_aligned',['../group__heap.html#gaccf8c249872f30bf1c2493a09197d734',1,'mimalloc-doc.h']]],
['mi_5fheap_5frealloc_5faligned_5fat_54',['mi_heap_realloc_aligned_at',['../group__heap.html#ga6df988a7219d5707f010d5f3eb0dc3f5',1,'mimalloc-doc.h']]],
['mi_5fheap_5freallocf_55',['mi_heap_reallocf',['../group__heap.html#gae7cd171425bee04c683c65a3701f0b4a',1,'mimalloc-doc.h']]],
['mi_5fheap_5freallocn_56',['mi_heap_reallocn',['../group__heap.html#gaccf7bfe10ce510a000d3547d9cf7fa29',1,'mimalloc-doc.h']]],
['mi_5fheap_5freallocn_5ftp_57',['mi_heap_reallocn_tp',['../group__typed.html#gaf213d5422ec35e7f6caad827c79bc948',1,'mimalloc-doc.h']]],
['mi_5fheap_5frealpath_58',['mi_heap_realpath',['../group__heap.html#ga55545a3ec6da29c5b4f62e540ecac1e2',1,'mimalloc-doc.h']]],
['mi_5fheap_5frecalloc_59',['mi_heap_recalloc',['../group__zeroinit.html#gad1a0d325d930eeb80f25e3fea37aacde',1,'mimalloc-doc.h']]],
['mi_5fheap_5frecalloc_5faligned_60',['mi_heap_recalloc_aligned',['../group__zeroinit.html#ga87ddd674bf1c67237d780d0b9e0f0f32',1,'mimalloc-doc.h']]],
['mi_5fheap_5frecalloc_5faligned_5fat_61',['mi_heap_recalloc_aligned_at',['../group__zeroinit.html#ga07b5bcbaf00d0d2e598c232982588496',1,'mimalloc-doc.h']]],
['mi_5fheap_5frecalloc_5ftp_62',['mi_heap_recalloc_tp',['../group__typed.html#ga3e50a1600958fcaf1a7f3560c9174f9e',1,'mimalloc-doc.h']]],
['mi_5fheap_5frezalloc_63',['mi_heap_rezalloc',['../group__zeroinit.html#ga8d8b7ebb24b513cd84d1a696048da60d',1,'mimalloc-doc.h']]],
['mi_5fheap_5frezalloc_5faligned_64',['mi_heap_rezalloc_aligned',['../group__zeroinit.html#ga5129f6dc46ee1613d918820a8a0533a7',1,'mimalloc-doc.h']]],
['mi_5fheap_5frezalloc_5faligned_5fat_65',['mi_heap_rezalloc_aligned_at',['../group__zeroinit.html#ga2bafa79c3f98ea74882349d44cffa5d9',1,'mimalloc-doc.h']]],
['mi_5fheap_5fset_5fdefault_66',['mi_heap_set_default',['../group__heap.html#ga349b677dec7da5eacdbc7a385bd62a4a',1,'mimalloc-doc.h']]],
['mi_5fheap_5fstrdup_67',['mi_heap_strdup',['../group__heap.html#ga5754e09ccc51dd6bc73885bb6ea21b7a',1,'mimalloc-doc.h']]],
['mi_5fheap_5fstrndup_68',['mi_heap_strndup',['../group__heap.html#gad224df78f1fbee942df8adf023e12cf3',1,'mimalloc-doc.h']]],
['mi_5fheap_5ft_69',['mi_heap_t',['../group__heap.html#ga34a47cde5a5b38c29f1aa3c5e76943c2',1,'mimalloc-doc.h']]],
['mi_5fheap_5fvisit_5fblocks_70',['mi_heap_visit_blocks',['../group__analysis.html#ga70c46687dc6e9dc98b232b02646f8bed',1,'mimalloc-doc.h']]],
['mi_5fheap_5fzalloc_71',['mi_heap_zalloc',['../group__heap.html#gabebc796399619d964d8db77aa835e8c1',1,'mimalloc-doc.h']]],
['mi_5fheap_5fzalloc_5faligned_72',['mi_heap_zalloc_aligned',['../group__heap.html#ga6466bde8b5712aa34e081a8317f9f471',1,'mimalloc-doc.h']]],
['mi_5fheap_5fzalloc_5faligned_5fat_73',['mi_heap_zalloc_aligned_at',['../group__heap.html#ga484e3d01cd174f78c7e53370e5a7c819',1,'mimalloc-doc.h']]],
['mi_5fheap_5fzalloc_5ftp_74',['mi_heap_zalloc_tp',['../group__typed.html#gad6e87e86e994aa14416ae9b5d4c188fe',1,'mimalloc-doc.h']]],
['mi_5fis_5fin_5fheap_5fregion_75',['mi_is_in_heap_region',['../group__extended.html#ga5f071b10d4df1c3658e04e7fd67a94e6',1,'mimalloc-doc.h']]],
['mi_5fis_5fredirected_76',['mi_is_redirected',['../group__extended.html#gaad25050b19f30cd79397b227e0157a3f',1,'mimalloc-doc.h']]],
['mi_5fmalloc_77',['mi_malloc',['../group__malloc.html#gae1dd97b542420c87ae085e822b1229e8',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5faligned_78',['mi_malloc_aligned',['../group__aligned.html#ga69578ff1a98ca16e1dcd02c0995cd65c',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5faligned_5fat_79',['mi_malloc_aligned_at',['../group__aligned.html#ga2022f71b95a7cd6cce1b6e07752ae8ca',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5fgood_5fsize_80',['mi_malloc_good_size',['../group__posix.html#ga9d23ac7885fed7413c11d8e0ffa31071',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5fsize_81',['mi_malloc_size',['../group__posix.html#ga4531c9e775bb3ae12db57c1ba8a5d7de',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5fsmall_82',['mi_malloc_small',['../group__extended.html#ga7f050bc6b897da82692174f5fce59cde',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5ftp_83',['mi_malloc_tp',['../group__typed.html#ga0619a62c5fd886f1016030abe91f0557',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5fusable_5fsize_84',['mi_malloc_usable_size',['../group__posix.html#ga06d07cf357bbac5c73ba5d0c0c421e17',1,'mimalloc-doc.h']]],
['mi_5fmallocn_85',['mi_mallocn',['../group__malloc.html#ga61f46bade3db76ca24aaafedc40de7b6',1,'mimalloc-doc.h']]],
['mi_5fmallocn_5ftp_86',['mi_mallocn_tp',['../group__typed.html#gae5cb6e0fafc9f23169c5622e077afe8b',1,'mimalloc-doc.h']]],
['mi_5fmanage_5fos_5fmemory_87',['mi_manage_os_memory',['../group__extended.html#ga4c6486a1fdcd7a423b5f25fe4be8e0cf',1,'mimalloc-doc.h']]],
['mi_5fmanage_5fos_5fmemory_5fex_88',['mi_manage_os_memory_ex',['../group__extended.html#ga41ce8525d77bbb60f618fa1029994f6e',1,'mimalloc-doc.h']]],
['mi_5fmbsdup_89',['mi_mbsdup',['../group__posix.html#ga7b82a44094fdec4d2084eb4288a979b0',1,'mimalloc-doc.h']]],
['mi_5fmemalign_90',['mi_memalign',['../group__posix.html#ga726867f13fd29ca36064954c0285b1d8',1,'mimalloc-doc.h']]],
['mi_5fnew_91',['mi_new',['../group__cpp.html#ga633d96e3bc7011f960df9f3b2731fc6a',1,'mimalloc-doc.h']]],
['mi_5fnew_5faligned_92',['mi_new_aligned',['../group__cpp.html#ga79c54da0b4b4ce9fcc11d2f6ef6675f8',1,'mimalloc-doc.h']]],
['mi_5fnew_5faligned_5fnothrow_93',['mi_new_aligned_nothrow',['../group__cpp.html#ga92ae00b6dd64406c7e64557711ec04b7',1,'mimalloc-doc.h']]],
['mi_5fnew_5fn_94',['mi_new_n',['../group__cpp.html#gadd11b85c15d21d308386844b5233856c',1,'mimalloc-doc.h']]],
['mi_5fnew_5fnothrow_95',['mi_new_nothrow',['../group__cpp.html#ga5cb4f120d1f7296074256215aa9a9e54',1,'mimalloc-doc.h']]],
['mi_5fnew_5frealloc_96',['mi_new_realloc',['../group__cpp.html#ga6867d89baf992728e0cc20a1f47db4d0',1,'mimalloc-doc.h']]],
['mi_5fnew_5freallocn_97',['mi_new_reallocn',['../group__cpp.html#gaace912ce086682d56f3ce9f7638d9d67',1,'mimalloc-doc.h']]],
['mi_5foption_5fabandoned_5fpage_5fpurge_98',['mi_option_abandoned_page_purge',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca11e62ed69200a489a5be955582078c0c',1,'mimalloc-doc.h']]],
['mi_5foption_5fabandoned_5freclaim_5fon_5ffree_99',['mi_option_abandoned_reclaim_on_free',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca009e4b5684922ce664d73d2a8e1698d9',1,'mimalloc-doc.h']]],
['mi_5foption_5fallow_5flarge_5fos_5fpages_100',['mi_option_allow_large_os_pages',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7cc4804ced69004fa42a9a136a9ba556',1,'mimalloc-doc.h']]],
['mi_5foption_5farena_5feager_5fcommit_101',['mi_option_arena_eager_commit',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafd0c5ddbc4b59fd8b5216871728167a5',1,'mimalloc-doc.h']]],
['mi_5foption_5farena_5fpurge_5fmult_102',['mi_option_arena_purge_mult',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca8236501f1ab45d26e6fd885d191a2b5e',1,'mimalloc-doc.h']]],
['mi_5foption_5farena_5freserve_103',['mi_option_arena_reserve',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cab1c88e23ae290bbeec824038a97959de',1,'mimalloc-doc.h']]],
['mi_5foption_5fdestroy_5fon_5fexit_104',['mi_option_destroy_on_exit',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca6364331e305e7d3c0218b058ff3afc88',1,'mimalloc-doc.h']]],
['mi_5foption_5fdisable_105',['mi_option_disable',['../group__options.html#gaebf6ff707a2e688ebb1a2296ca564054',1,'mimalloc-doc.h']]],
['mi_5foption_5fdisallow_5farena_5falloc_106',['mi_option_disallow_arena_alloc',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caeae1696100e4057ffc4182730cc04e40',1,'mimalloc-doc.h']]],
['mi_5foption_5fdisallow_5fos_5falloc_107',['mi_option_disallow_os_alloc',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cadcfb5a09580361b1be65901d2d812de6',1,'mimalloc-doc.h']]],
['mi_5foption_5feager_5fcommit_108',['mi_option_eager_commit',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca1e8de72c93da7ff22d91e1e27b52ac2b',1,'mimalloc-doc.h']]],
['mi_5foption_5feager_5fcommit_5fdelay_109',['mi_option_eager_commit_delay',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca17a190c25be381142d87e0468c4c068c',1,'mimalloc-doc.h']]],
['mi_5foption_5fenable_110',['mi_option_enable',['../group__options.html#ga04180ae41b0d601421dd62ced40ca050',1,'mimalloc-doc.h']]],
['mi_5foption_5fget_111',['mi_option_get',['../group__options.html#ga7e8af195cc81d3fa64ccf2662caa565a',1,'mimalloc-doc.h']]],
['mi_5foption_5fget_5fclamp_112',['mi_option_get_clamp',['../group__options.html#ga96ad9c406338bd314cfe878cfc9bf723',1,'mimalloc-doc.h']]],
['mi_5foption_5fget_5fsize_113',['mi_option_get_size',['../group__options.html#ga274db5a6ac87cc24ef0b23e7006ed02c',1,'mimalloc-doc.h']]],
['mi_5foption_5fis_5fenabled_114',['mi_option_is_enabled',['../group__options.html#ga459ad98f18b3fc9275474807fe0ca188',1,'mimalloc-doc.h']]],
['mi_5foption_5flimit_5fos_5falloc_115',['mi_option_limit_os_alloc',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca9fa61bd9668479f8452d2195759444cc',1,'mimalloc-doc.h']]],
['mi_5foption_5fmax_5ferrors_116',['mi_option_max_errors',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caec6ecbe29d46a48205ed8823a8a52a6a',1,'mimalloc-doc.h']]],
['mi_5foption_5fmax_5fsegment_5freclaim_117',['mi_option_max_segment_reclaim',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa9ad9005d7017c8c30ad2d6ba31db909',1,'mimalloc-doc.h']]],
['mi_5foption_5fmax_5fwarnings_118',['mi_option_max_warnings',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caf9595921087e942602ee079158762665',1,'mimalloc-doc.h']]],
['mi_5foption_5fos_5ftag_119',['mi_option_os_tag',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4b74ae2a69e445de6c2361b73c1d14bf',1,'mimalloc-doc.h']]],
['mi_5foption_5fpurge_5fdecommits_120',['mi_option_purge_decommits',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca9d15c5e3d2115eef681c17e4dd5ab9a4',1,'mimalloc-doc.h']]],
['mi_5foption_5fpurge_5fdelay_121',['mi_option_purge_delay',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cadd351e615acd8563529c20a347be7290',1,'mimalloc-doc.h']]],
['mi_5foption_5fpurge_5fextend_5fdelay_122',['mi_option_purge_extend_delay',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca02005f164bdf03f5f00c5be726adf487',1,'mimalloc-doc.h']]],
['mi_5foption_5freserve_5fhuge_5fos_5fpages_123',['mi_option_reserve_huge_os_pages',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caca7ed041be3b0b9d0b82432c7bf41af2',1,'mimalloc-doc.h']]],
['mi_5foption_5freserve_5fhuge_5fos_5fpages_5fat_124',['mi_option_reserve_huge_os_pages_at',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa13e7926d4339d2aa6fbf61d4473fd5c',1,'mimalloc-doc.h']]],
['mi_5foption_5freserve_5fos_5fmemory_125',['mi_option_reserve_os_memory',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4999c828cf79a0fb2de65d23f7333',1,'mimalloc-doc.h']]],
['mi_5foption_5fretry_5fon_5foom_126',['mi_option_retry_on_oom',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca8f51df355bf6651db899e6085b54865e',1,'mimalloc-doc.h']]],
['mi_5foption_5fset_127',['mi_option_set',['../group__options.html#gaf84921c32375e25754dc2ee6a911fa60',1,'mimalloc-doc.h']]],
['mi_5foption_5fset_5fdefault_128',['mi_option_set_default',['../group__options.html#ga7ef623e440e6e5545cb08c94e71e4b90',1,'mimalloc-doc.h']]],
['mi_5foption_5fset_5fenabled_129',['mi_option_set_enabled',['../group__options.html#ga9a13d05fcb77489cb06d4d017ebd8bed',1,'mimalloc-doc.h']]],
['mi_5foption_5fset_5fenabled_5fdefault_130',['mi_option_set_enabled_default',['../group__options.html#ga65518b69ec5d32336b50e07f74b3f629',1,'mimalloc-doc.h']]],
['mi_5foption_5fshow_5ferrors_131',['mi_option_show_errors',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4822e5c00732c5984b32a032837f0',1,'mimalloc-doc.h']]],
['mi_5foption_5fshow_5fstats_132',['mi_option_show_stats',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0957ef73b2550764b4840edf48422fda',1,'mimalloc-doc.h']]],
['mi_5foption_5ft_133',['mi_option_t',['../group__options.html#gafebf7ed116adb38ae5218bc3ce06884c',1,'mimalloc-doc.h']]],
['mi_5foption_5fuse_5fnuma_5fnodes_134',['mi_option_use_numa_nodes',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0ac33a18f6b659fcfaf44efb0bab1b74',1,'mimalloc-doc.h']]],
['mi_5foption_5fverbose_135',['mi_option_verbose',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7c8b7bf5281c581bad64f5daa6442777',1,'mimalloc-doc.h']]],
['mi_5foption_5fvisit_5fabandoned_136',['mi_option_visit_abandoned',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca38c67733a3956a1f4eeaca89fab9e78e',1,'mimalloc-doc.h']]],
['mi_5foutput_5ffun_137',['mi_output_fun',['../group__extended.html#gadf31cea7d0332a81c8b882cbbdbadb8d',1,'mimalloc-doc.h']]],
['mi_5fposix_5fmemalign_138',['mi_posix_memalign',['../group__posix.html#gacff84f226ba9feb2031b8992e5579447',1,'mimalloc-doc.h']]],
['mi_5fprocess_5finfo_139',['mi_process_info',['../group__extended.html#ga7d862c2affd5790381da14eb102a364d',1,'mimalloc-doc.h']]],
['mi_5fpvalloc_140',['mi_pvalloc',['../group__posix.html#ga644bebccdbb2821542dd8c7e7641f476',1,'mimalloc-doc.h']]],
['mi_5frealloc_141',['mi_realloc',['../group__malloc.html#ga0621af6a5e3aa384e6a1b548958bf583',1,'mimalloc-doc.h']]],
['mi_5frealloc_5faligned_142',['mi_realloc_aligned',['../group__aligned.html#ga5d7a46d054b4d7abe9d8d2474add2edf',1,'mimalloc-doc.h']]],
['mi_5frealloc_5faligned_5fat_143',['mi_realloc_aligned_at',['../group__aligned.html#gad06dcf2bb8faadb2c8ea61ee5d24bbf6',1,'mimalloc-doc.h']]],
['mi_5freallocarr_144',['mi_reallocarr',['../group__posix.html#ga7e1934d60a3e697950eeb48e042bfad5',1,'mimalloc-doc.h']]],
['mi_5freallocarray_145',['mi_reallocarray',['../group__posix.html#gadfeccb72748a2f6305474a37d9d57bce',1,'mimalloc-doc.h']]],
['mi_5freallocf_146',['mi_reallocf',['../group__malloc.html#ga4dc3a4067037b151a64629fe8a332641',1,'mimalloc-doc.h']]],
['mi_5freallocn_147',['mi_reallocn',['../group__malloc.html#ga8bddfb4a1270a0854bbcf44cb3980467',1,'mimalloc-doc.h']]],
['mi_5freallocn_5ftp_148',['mi_reallocn_tp',['../group__typed.html#ga1158b49a55dfa81f58a4426a7578f523',1,'mimalloc-doc.h']]],
['mi_5frealpath_149',['mi_realpath',['../group__malloc.html#ga94c3afcc086e85d75a57e9f76b9b71dd',1,'mimalloc-doc.h']]],
['mi_5frecalloc_150',['mi_recalloc',['../group__malloc.html#ga23a0fbb452b5dce8e31fab1a1958cacc',1,'mimalloc-doc.h']]],
['mi_5frecalloc_5faligned_151',['mi_recalloc_aligned',['../group__zeroinit.html#ga3e2169b48683aa0ab64f813fd68d839e',1,'mimalloc-doc.h']]],
['mi_5frecalloc_5faligned_5fat_152',['mi_recalloc_aligned_at',['../group__zeroinit.html#gaae25e4ddedd4e0fb61b1a8bd5d452750',1,'mimalloc-doc.h']]],
['mi_5fregister_5fdeferred_5ffree_153',['mi_register_deferred_free',['../group__extended.html#ga3460a6ca91af97be4058f523d3cb8ece',1,'mimalloc-doc.h']]],
['mi_5fregister_5ferror_154',['mi_register_error',['../group__extended.html#gaa1d55e0e894be240827e5d87ec3a1f45',1,'mimalloc-doc.h']]],
['mi_5fregister_5foutput_155',['mi_register_output',['../group__extended.html#gae5b17ff027cd2150b43a33040250cf3f',1,'mimalloc-doc.h']]],
['mi_5freserve_5fhuge_5fos_5fpages_5fat_156',['mi_reserve_huge_os_pages_at',['../group__extended.html#ga7795a13d20087447281858d2c771cca1',1,'mimalloc-doc.h']]],
['mi_5freserve_5fhuge_5fos_5fpages_5fat_5fex_157',['mi_reserve_huge_os_pages_at_ex',['../group__extended.html#ga591aab1c2bc2ca920e33f0f9f9cb5c52',1,'mimalloc-doc.h']]],
['mi_5freserve_5fhuge_5fos_5fpages_5finterleave_158',['mi_reserve_huge_os_pages_interleave',['../group__extended.html#ga3132f521fb756fc0e8ec0b74fb58df50',1,'mimalloc-doc.h']]],
['mi_5freserve_5fos_5fmemory_159',['mi_reserve_os_memory',['../group__extended.html#ga00ec3324b6b2591c7fe3677baa30a767',1,'mimalloc-doc.h']]],
['mi_5freserve_5fos_5fmemory_5fex_160',['mi_reserve_os_memory_ex',['../group__extended.html#ga32f519797fd9a81acb4f52d36e6d751b',1,'mimalloc-doc.h']]],
['mi_5frezalloc_161',['mi_rezalloc',['../group__zeroinit.html#gadfd34cd7b4f2bbda7ae06367a6360756',1,'mimalloc-doc.h']]],
['mi_5frezalloc_5faligned_162',['mi_rezalloc_aligned',['../group__zeroinit.html#ga4d02404fe1e7db00beb65f185e012caa',1,'mimalloc-doc.h']]],
['mi_5frezalloc_5faligned_5fat_163',['mi_rezalloc_aligned_at',['../group__zeroinit.html#ga6843a88285bbfcc3bdfccc60aafd1270',1,'mimalloc-doc.h']]],
['mi_5fsmall_5fsize_5fmax_164',['MI_SMALL_SIZE_MAX',['../group__extended.html#ga1ea64283508718d9d645c38efc2f4305',1,'mimalloc-doc.h']]],
['mi_5fstats_5fmerge_165',['mi_stats_merge',['../group__extended.html#ga854b1de8cb067c7316286c28b2fcd3d1',1,'mimalloc-doc.h']]],
['mi_5fstats_5fprint_166',['mi_stats_print',['../group__extended.html#ga2d126e5c62d3badc35445e5d84166df2',1,'mimalloc-doc.h']]],
['mi_5fstats_5fprint_5fout_167',['mi_stats_print_out',['../group__extended.html#ga537f13b299ddf801e49a5a94fde02c79',1,'mimalloc-doc.h']]],
['mi_5fstats_5freset_168',['mi_stats_reset',['../group__extended.html#ga3bb8468b8cfcc6e2a61d98aee85c5f99',1,'mimalloc-doc.h']]],
['mi_5fstl_5fallocator_169',['mi_stl_allocator',['../group__cpp.html#structmi__stl__allocator',1,'']]],
['mi_5fstrdup_170',['mi_strdup',['../group__malloc.html#ga245ac90ebc2cfdd17de599e5fea59889',1,'mimalloc-doc.h']]],
['mi_5fstrndup_171',['mi_strndup',['../group__malloc.html#ga486d0d26b3b3794f6d1cdb41a9aed92d',1,'mimalloc-doc.h']]],
['mi_5fsubproc_5fadd_5fcurrent_5fthread_172',['mi_subproc_add_current_thread',['../group__extended.html#gadbc53414eb68b275588ec001ce1ddc7c',1,'mimalloc-doc.h']]],
['mi_5fsubproc_5fdelete_173',['mi_subproc_delete',['../group__extended.html#gaa7d263e9429bac9ac8345c9d25de610e',1,'mimalloc-doc.h']]],
['mi_5fsubproc_5fid_5ft_174',['mi_subproc_id_t',['../group__extended.html#ga8c0bcd1fee27c7641e9c3c0d991b3b7d',1,'mimalloc-doc.h']]],
['mi_5fsubproc_5fmain_175',['mi_subproc_main',['../group__extended.html#ga2ecba0d7ebdc99e71bb985c4a1609806',1,'mimalloc-doc.h']]],
['mi_5fsubproc_5fnew_176',['mi_subproc_new',['../group__extended.html#ga8068cac328e41fa2170faef707315243',1,'mimalloc-doc.h']]],
['mi_5fthread_5fdone_177',['mi_thread_done',['../group__extended.html#ga0ae4581e85453456a0d658b2b98bf7bf',1,'mimalloc-doc.h']]],
['mi_5fthread_5finit_178',['mi_thread_init',['../group__extended.html#gaf8e73efc2cbca9ebfdfb166983a04c17',1,'mimalloc-doc.h']]],
['mi_5fthread_5fstats_5fprint_5fout_179',['mi_thread_stats_print_out',['../group__extended.html#gab1dac8476c46cb9eecab767eb40c1525',1,'mimalloc-doc.h']]],
['mi_5fusable_5fsize_180',['mi_usable_size',['../group__extended.html#ga089c859d9eddc5f9b4bd946cd53cebee',1,'mimalloc-doc.h']]],
['mi_5fvalloc_181',['mi_valloc',['../group__posix.html#ga50cafb9722020402f065de93799f64ca',1,'mimalloc-doc.h']]],
['mi_5fwcsdup_182',['mi_wcsdup',['../group__posix.html#gaa9fd7f25c9ac3a20e89b33bd6e383fcf',1,'mimalloc-doc.h']]],
['mi_5fwdupenv_5fs_183',['mi_wdupenv_s',['../group__posix.html#ga6ac6a6a8f3c96f1af24bb8d0439cbbd1',1,'mimalloc-doc.h']]],
['mi_5fzalloc_184',['mi_zalloc',['../group__malloc.html#gae6e38c4403247a7b40d80419e093bfb8',1,'mimalloc-doc.h']]],
['mi_5fzalloc_5faligned_185',['mi_zalloc_aligned',['../group__aligned.html#gaac7d0beb782f9b9ac31f47492b130f82',1,'mimalloc-doc.h']]],
['mi_5fzalloc_5faligned_5fat_186',['mi_zalloc_aligned_at',['../group__aligned.html#ga7c1778805ce50ebbf02ccbd5e39d5dba',1,'mimalloc-doc.h']]],
['mi_5fzalloc_5fsmall_187',['mi_zalloc_small',['../group__extended.html#ga51c47637e81df0e2f13a2d7a2dec123e',1,'mimalloc-doc.h']]],
['mi_5fzalloc_5ftp_188',['mi_zalloc_tp',['../group__typed.html#gac77a61bdaf680a803785fe307820b48c',1,'mimalloc-doc.h']]]
]; ];

View file

@ -1,4 +1,5 @@
var searchData= var searchData=
[ [
['typed_20macros_167',['Typed Macros',['../group__typed.html',1,'']]] ['options_0',['Options',['../environment.html',1,'Environment Options'],['../group__options.html',1,'Runtime Options']]],
['overriding_20malloc_1',['Overriding Malloc',['../overrides.html',1,'']]]
]; ];

View file

@ -1,5 +1,5 @@
var searchData= var searchData=
[ [
['used_168',['used',['../group__analysis.html#ab820302c5cd0df133eb8e51650a008b4',1,'mi_heap_area_t']]], ['performance_0',['Performance',['../bench.html',1,'']]],
['using_20the_20library_169',['Using the library',['../using.html',1,'']]] ['posix_1',['Posix',['../group__posix.html',1,'']]]
]; ];

View file

@ -1,4 +1,6 @@
var searchData= var searchData=
[ [
['zero_20initialized_20re_2dallocation_170',['Zero initialized re-allocation',['../group__zeroinit.html',1,'']]] ['re_20allocation_0',['Zero initialized re-allocation',['../group__zeroinit.html',1,'']]],
['reserved_1',['reserved',['../group__analysis.html#ae848a3e6840414891035423948ca0383',1,'mi_heap_area_t']]],
['runtime_20options_2',['Runtime Options',['../group__options.html',1,'']]]
]; ];

View file

@ -1,4 +1,5 @@
var searchData= var searchData=
[ [
['zero_20initialized_20re_2dallocation',['Zero initialized re-allocation',['../group__zeroinit.html',1,'']]] ['the_20library_0',['Using the library',['../using.html',1,'']]],
['typed_20macros_1',['Typed Macros',['../group__typed.html',1,'']]]
]; ];

5
docs/search/all_e.js Normal file
View file

@ -0,0 +1,5 @@
var searchData=
[
['used_0',['used',['../group__analysis.html#ab820302c5cd0df133eb8e51650a008b4',1,'mi_heap_area_t']]],
['using_20the_20library_1',['Using the library',['../using.html',1,'']]]
];

4
docs/search/all_f.js Normal file
View file

@ -0,0 +1,4 @@
var searchData=
[
['wrappers_0',['C++ wrappers',['../group__cpp.html',1,'']]]
];

View file

@ -1,5 +1,5 @@
var searchData= var searchData=
[ [
['mi_5fheap_5farea_5ft_171',['mi_heap_area_t',['../group__analysis.html#structmi__heap__area__t',1,'']]], ['mi_5fheap_5farea_5ft_0',['mi_heap_area_t',['../group__analysis.html#structmi__heap__area__t',1,'']]],
['mi_5fstl_5fallocator_172',['mi_stl_allocator',['../group__cpp.html#structmi__stl__allocator',1,'']]] ['mi_5fstl_5fallocator_1',['mi_stl_allocator',['../group__cpp.html#structmi__stl__allocator',1,'']]]
]; ];

18
docs/search/close.svg Normal file
View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 11 11"
height="11"
width="11"
id="svg2"
version="1.1">
<defs
id="defs6" />
<path
id="path12"
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 "
style="stroke-width:1.09870648;fill:#bababa;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 947 B

View file

@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['mi_5foption_5ft_296',['mi_option_t',['../group__options.html#gafebf7ed116adb38ae5218bc3ce06884c',1,'mimalloc-doc.h']]] ['mi_5foption_5ft_0',['mi_option_t',['../group__options.html#gafebf7ed116adb38ae5218bc3ce06884c',1,'mimalloc-doc.h']]]
]; ];

View file

@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['_5fmi_5foption_5flast_297',['_mi_option_last',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca5b4357b74be0d87568036c32eb1a2e4a',1,'mimalloc-doc.h']]] ['_5fmi_5foption_5flast_0',['_mi_option_last',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca5b4357b74be0d87568036c32eb1a2e4a',1,'mimalloc-doc.h']]]
]; ];

View file

@ -1,19 +1,31 @@
var searchData= var searchData=
[ [
['mi_5foption_5feager_5fcommit_298',['mi_option_eager_commit',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca1e8de72c93da7ff22d91e1e27b52ac2b',1,'mimalloc-doc.h']]], ['mi_5foption_5fabandoned_5fpage_5fpurge_0',['mi_option_abandoned_page_purge',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca11e62ed69200a489a5be955582078c0c',1,'mimalloc-doc.h']]],
['mi_5foption_5feager_5fcommit_5fdelay_299',['mi_option_eager_commit_delay',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca17a190c25be381142d87e0468c4c068c',1,'mimalloc-doc.h']]], ['mi_5foption_5fabandoned_5freclaim_5fon_5ffree_1',['mi_option_abandoned_reclaim_on_free',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca009e4b5684922ce664d73d2a8e1698d9',1,'mimalloc-doc.h']]],
['mi_5foption_5feager_5fregion_5fcommit_300',['mi_option_eager_region_commit',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca32ce97ece29f69e82579679cf8a307ad',1,'mimalloc-doc.h']]], ['mi_5foption_5fallow_5flarge_5fos_5fpages_2',['mi_option_allow_large_os_pages',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7cc4804ced69004fa42a9a136a9ba556',1,'mimalloc-doc.h']]],
['mi_5foption_5flarge_5fos_5fpages_301',['mi_option_large_os_pages',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4192d491200d0055df0554d4cf65054e',1,'mimalloc-doc.h']]], ['mi_5foption_5farena_5feager_5fcommit_3',['mi_option_arena_eager_commit',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafd0c5ddbc4b59fd8b5216871728167a5',1,'mimalloc-doc.h']]],
['mi_5foption_5fos_5ftag_302',['mi_option_os_tag',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4b74ae2a69e445de6c2361b73c1d14bf',1,'mimalloc-doc.h']]], ['mi_5foption_5farena_5fpurge_5fmult_4',['mi_option_arena_purge_mult',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca8236501f1ab45d26e6fd885d191a2b5e',1,'mimalloc-doc.h']]],
['mi_5foption_5fpage_5freset_303',['mi_option_page_reset',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cada854dd272c66342f18a93ee254a2968',1,'mimalloc-doc.h']]], ['mi_5foption_5farena_5freserve_5',['mi_option_arena_reserve',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cab1c88e23ae290bbeec824038a97959de',1,'mimalloc-doc.h']]],
['mi_5foption_5freserve_5fhuge_5fos_5fpages_304',['mi_option_reserve_huge_os_pages',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caca7ed041be3b0b9d0b82432c7bf41af2',1,'mimalloc-doc.h']]], ['mi_5foption_5fdestroy_5fon_5fexit_6',['mi_option_destroy_on_exit',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca6364331e305e7d3c0218b058ff3afc88',1,'mimalloc-doc.h']]],
['mi_5foption_5freserve_5fhuge_5fos_5fpages_5fat_305',['mi_option_reserve_huge_os_pages_at',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa13e7926d4339d2aa6fbf61d4473fd5c',1,'mimalloc-doc.h']]], ['mi_5foption_5fdisallow_5farena_5falloc_7',['mi_option_disallow_arena_alloc',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caeae1696100e4057ffc4182730cc04e40',1,'mimalloc-doc.h']]],
['mi_5foption_5freset_5fdecommits_306',['mi_option_reset_decommits',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cac81ee965b130fa81238913a3c239d536',1,'mimalloc-doc.h']]], ['mi_5foption_5fdisallow_5fos_5falloc_8',['mi_option_disallow_os_alloc',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cadcfb5a09580361b1be65901d2d812de6',1,'mimalloc-doc.h']]],
['mi_5foption_5freset_5fdelay_307',['mi_option_reset_delay',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca154fe170131d5212cff57e22b99523c5',1,'mimalloc-doc.h']]], ['mi_5foption_5feager_5fcommit_9',['mi_option_eager_commit',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca1e8de72c93da7ff22d91e1e27b52ac2b',1,'mimalloc-doc.h']]],
['mi_5foption_5fsegment_5fcache_308',['mi_option_segment_cache',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca2ecbe7ef32f5c84de3739aa4f0b805a1',1,'mimalloc-doc.h']]], ['mi_5foption_5feager_5fcommit_5fdelay_10',['mi_option_eager_commit_delay',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca17a190c25be381142d87e0468c4c068c',1,'mimalloc-doc.h']]],
['mi_5foption_5fsegment_5freset_309',['mi_option_segment_reset',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafb121d30d87591850d5410ccc3a95c6d',1,'mimalloc-doc.h']]], ['mi_5foption_5flimit_5fos_5falloc_11',['mi_option_limit_os_alloc',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca9fa61bd9668479f8452d2195759444cc',1,'mimalloc-doc.h']]],
['mi_5foption_5fshow_5ferrors_310',['mi_option_show_errors',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4822e5c00732c5984b32a032837f0',1,'mimalloc-doc.h']]], ['mi_5foption_5fmax_5ferrors_12',['mi_option_max_errors',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caec6ecbe29d46a48205ed8823a8a52a6a',1,'mimalloc-doc.h']]],
['mi_5foption_5fshow_5fstats_311',['mi_option_show_stats',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0957ef73b2550764b4840edf48422fda',1,'mimalloc-doc.h']]], ['mi_5foption_5fmax_5fsegment_5freclaim_13',['mi_option_max_segment_reclaim',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa9ad9005d7017c8c30ad2d6ba31db909',1,'mimalloc-doc.h']]],
['mi_5foption_5fuse_5fnuma_5fnodes_312',['mi_option_use_numa_nodes',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0ac33a18f6b659fcfaf44efb0bab1b74',1,'mimalloc-doc.h']]], ['mi_5foption_5fmax_5fwarnings_14',['mi_option_max_warnings',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caf9595921087e942602ee079158762665',1,'mimalloc-doc.h']]],
['mi_5foption_5fverbose_313',['mi_option_verbose',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7c8b7bf5281c581bad64f5daa6442777',1,'mimalloc-doc.h']]] ['mi_5foption_5fos_5ftag_15',['mi_option_os_tag',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca4b74ae2a69e445de6c2361b73c1d14bf',1,'mimalloc-doc.h']]],
['mi_5foption_5fpurge_5fdecommits_16',['mi_option_purge_decommits',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca9d15c5e3d2115eef681c17e4dd5ab9a4',1,'mimalloc-doc.h']]],
['mi_5foption_5fpurge_5fdelay_17',['mi_option_purge_delay',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cadd351e615acd8563529c20a347be7290',1,'mimalloc-doc.h']]],
['mi_5foption_5fpurge_5fextend_5fdelay_18',['mi_option_purge_extend_delay',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca02005f164bdf03f5f00c5be726adf487',1,'mimalloc-doc.h']]],
['mi_5foption_5freserve_5fhuge_5fos_5fpages_19',['mi_option_reserve_huge_os_pages',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caca7ed041be3b0b9d0b82432c7bf41af2',1,'mimalloc-doc.h']]],
['mi_5foption_5freserve_5fhuge_5fos_5fpages_5fat_20',['mi_option_reserve_huge_os_pages_at',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884caa13e7926d4339d2aa6fbf61d4473fd5c',1,'mimalloc-doc.h']]],
['mi_5foption_5freserve_5fos_5fmemory_21',['mi_option_reserve_os_memory',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4999c828cf79a0fb2de65d23f7333',1,'mimalloc-doc.h']]],
['mi_5foption_5fretry_5fon_5foom_22',['mi_option_retry_on_oom',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca8f51df355bf6651db899e6085b54865e',1,'mimalloc-doc.h']]],
['mi_5foption_5fshow_5ferrors_23',['mi_option_show_errors',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884cafbf4822e5c00732c5984b32a032837f0',1,'mimalloc-doc.h']]],
['mi_5foption_5fshow_5fstats_24',['mi_option_show_stats',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0957ef73b2550764b4840edf48422fda',1,'mimalloc-doc.h']]],
['mi_5foption_5fuse_5fnuma_5fnodes_25',['mi_option_use_numa_nodes',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca0ac33a18f6b659fcfaf44efb0bab1b74',1,'mimalloc-doc.h']]],
['mi_5foption_5fverbose_26',['mi_option_verbose',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca7c8b7bf5281c581bad64f5daa6442777',1,'mimalloc-doc.h']]],
['mi_5foption_5fvisit_5fabandoned_27',['mi_option_visit_abandoned',['../group__options.html#ggafebf7ed116adb38ae5218bc3ce06884ca38c67733a3956a1f4eeaca89fab9e78e',1,'mimalloc-doc.h']]]
]; ];

View file

@ -1,116 +1,138 @@
var searchData= var searchData=
[ [
['mi_5f_5fposix_5fmemalign_173',['mi__posix_memalign',['../group__posix.html#gad5a69c8fea96aa2b7a7c818c2130090a',1,'mimalloc-doc.h']]], ['mi_5f_5fexpand_0',['mi__expand',['../group__posix.html#ga66bcfeb4faedbb42b796bc680821ef84',1,'mimalloc-doc.h']]],
['mi_5faligned_5falloc_174',['mi_aligned_alloc',['../group__posix.html#ga1326d2e4388630b5f81ca7206318b8e5',1,'mimalloc-doc.h']]], ['mi_5f_5fposix_5fmemalign_1',['mi__posix_memalign',['../group__posix.html#gad5a69c8fea96aa2b7a7c818c2130090a',1,'mimalloc-doc.h']]],
['mi_5fcalloc_175',['mi_calloc',['../group__malloc.html#ga97fedb4f7107c592fd7f0f0a8949a57d',1,'mimalloc-doc.h']]], ['mi_5fabandoned_5fvisit_5fblocks_2',['mi_abandoned_visit_blocks',['../group__analysis.html#ga6a4865a887b2ec5247854af61562503c',1,'mimalloc-doc.h']]],
['mi_5fcalloc_5faligned_176',['mi_calloc_aligned',['../group__aligned.html#ga53dddb4724042a90315b94bc268fb4c9',1,'mimalloc-doc.h']]], ['mi_5faligned_5falloc_3',['mi_aligned_alloc',['../group__posix.html#ga430ed1513f0571ff83be00ec58a98ee0',1,'mimalloc-doc.h']]],
['mi_5fcalloc_5faligned_5fat_177',['mi_calloc_aligned_at',['../group__aligned.html#ga08647c4593f3b2eef24a919a73eba3a3',1,'mimalloc-doc.h']]], ['mi_5faligned_5foffset_5frecalloc_4',['mi_aligned_offset_recalloc',['../group__posix.html#ga16570deddd559001b44953eedbad0084',1,'mimalloc-doc.h']]],
['mi_5fcfree_178',['mi_cfree',['../group__posix.html#ga705dc7a64bffacfeeb0141501a5c35d7',1,'mimalloc-doc.h']]], ['mi_5faligned_5frecalloc_5',['mi_aligned_recalloc',['../group__posix.html#gaf82cbb4b4f24acf723348628451798d3',1,'mimalloc-doc.h']]],
['mi_5fcheck_5fowned_179',['mi_check_owned',['../group__analysis.html#ga628c237489c2679af84a4d0d143b3dd5',1,'mimalloc-doc.h']]], ['mi_5farena_5farea_6',['mi_arena_area',['../group__extended.html#ga9a25a00a22151619a0be91a10af7787f',1,'mimalloc-doc.h']]],
['mi_5fcollect_180',['mi_collect',['../group__extended.html#ga421430e2226d7d468529cec457396756',1,'mimalloc-doc.h']]], ['mi_5fcalloc_7',['mi_calloc',['../group__malloc.html#ga6686568014b54d1e6c7ac64a076e4f56',1,'mimalloc-doc.h']]],
['mi_5fexpand_181',['mi_expand',['../group__malloc.html#gaaee66a1d483c3e28f585525fb96707e4',1,'mimalloc-doc.h']]], ['mi_5fcalloc_5faligned_8',['mi_calloc_aligned',['../group__aligned.html#ga424ef386fb1f9f8e0a86ab53f16eaaf1',1,'mimalloc-doc.h']]],
['mi_5ffree_182',['mi_free',['../group__malloc.html#gaf2c7b89c327d1f60f59e68b9ea644d95',1,'mimalloc-doc.h']]], ['mi_5fcalloc_5faligned_5fat_9',['mi_calloc_aligned_at',['../group__aligned.html#ga977f96bd2c5c141bcd70e6685c90d6c3',1,'mimalloc-doc.h']]],
['mi_5ffree_5faligned_183',['mi_free_aligned',['../group__posix.html#ga0d28d5cf61e6bfbb18c63092939fe5c9',1,'mimalloc-doc.h']]], ['mi_5fcfree_10',['mi_cfree',['../group__posix.html#ga705dc7a64bffacfeeb0141501a5c35d7',1,'mimalloc-doc.h']]],
['mi_5ffree_5fsize_184',['mi_free_size',['../group__posix.html#gae01389eedab8d67341ff52e2aad80ebb',1,'mimalloc-doc.h']]], ['mi_5fcheck_5fowned_11',['mi_check_owned',['../group__analysis.html#ga628c237489c2679af84a4d0d143b3dd5',1,'mimalloc-doc.h']]],
['mi_5ffree_5fsize_5faligned_185',['mi_free_size_aligned',['../group__posix.html#ga72e9d7ffb5fe94d69bc722c8506e27bc',1,'mimalloc-doc.h']]], ['mi_5fcollect_12',['mi_collect',['../group__extended.html#ga421430e2226d7d468529cec457396756',1,'mimalloc-doc.h']]],
['mi_5fgood_5fsize_186',['mi_good_size',['../group__extended.html#gac057927cd06c854b45fe7847e921bd47',1,'mimalloc-doc.h']]], ['mi_5fdebug_5fshow_5farenas_13',['mi_debug_show_arenas',['../group__extended.html#gad7439207f8f71fb6c382a9ea20b997e7',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcalloc_187',['mi_heap_calloc',['../group__heap.html#gaa6702b3c48e9e53e50e81b36f5011d55',1,'mimalloc-doc.h']]], ['mi_5fdupenv_5fs_14',['mi_dupenv_s',['../group__posix.html#gab41369c1a1da7504013a7a0b1d4dd958',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcalloc_5faligned_188',['mi_heap_calloc_aligned',['../group__heap.html#ga4af03a6e2b93fae77424d93f889705c3',1,'mimalloc-doc.h']]], ['mi_5fexpand_15',['mi_expand',['../group__malloc.html#ga19299856216cfbb08e2628593654dfb0',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcalloc_5faligned_5fat_189',['mi_heap_calloc_aligned_at',['../group__heap.html#ga08ca6419a5c057a4d965868998eef487',1,'mimalloc-doc.h']]], ['mi_5ffree_16',['mi_free',['../group__malloc.html#gaf2c7b89c327d1f60f59e68b9ea644d95',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcheck_5fowned_190',['mi_heap_check_owned',['../group__analysis.html#ga0d67c1789faaa15ff366c024fcaf6377',1,'mimalloc-doc.h']]], ['mi_5ffree_5faligned_17',['mi_free_aligned',['../group__posix.html#ga0d28d5cf61e6bfbb18c63092939fe5c9',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcollect_191',['mi_heap_collect',['../group__heap.html#ga7922f7495cde30b1984d0e6072419298',1,'mimalloc-doc.h']]], ['mi_5ffree_5fsize_18',['mi_free_size',['../group__posix.html#gae01389eedab8d67341ff52e2aad80ebb',1,'mimalloc-doc.h']]],
['mi_5fheap_5fcontains_5fblock_192',['mi_heap_contains_block',['../group__analysis.html#gaa862aa8ed8d57d84cae41fc1022d71af',1,'mimalloc-doc.h']]], ['mi_5ffree_5fsize_5faligned_19',['mi_free_size_aligned',['../group__posix.html#ga72e9d7ffb5fe94d69bc722c8506e27bc',1,'mimalloc-doc.h']]],
['mi_5fheap_5fdelete_193',['mi_heap_delete',['../group__heap.html#ga2ab1af8d438819b55319c7ef51d1e409',1,'mimalloc-doc.h']]], ['mi_5fgood_5fsize_20',['mi_good_size',['../group__extended.html#gac057927cd06c854b45fe7847e921bd47',1,'mimalloc-doc.h']]],
['mi_5fheap_5fdestroy_194',['mi_heap_destroy',['../group__heap.html#ga9f9c0844edb9717f4feacd79116b8e0d',1,'mimalloc-doc.h']]], ['mi_5fheap_5fcalloc_21',['mi_heap_calloc',['../group__heap.html#gac0098aaf231d3e9586c73136d5df95da',1,'mimalloc-doc.h']]],
['mi_5fheap_5fget_5fbacking_195',['mi_heap_get_backing',['../group__heap.html#ga5d03fbe062ffcf38f0f417fd968357fc',1,'mimalloc-doc.h']]], ['mi_5fheap_5fcalloc_5faligned_22',['mi_heap_calloc_aligned',['../group__heap.html#gacafcc26df827c7a7de5e850217566108',1,'mimalloc-doc.h']]],
['mi_5fheap_5fget_5fdefault_196',['mi_heap_get_default',['../group__heap.html#ga8db4cbb87314a989a9a187464d6b5e05',1,'mimalloc-doc.h']]], ['mi_5fheap_5fcalloc_5faligned_5fat_23',['mi_heap_calloc_aligned_at',['../group__heap.html#gaa42ec2079989c4374f2c331d9b35f4e4',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmalloc_197',['mi_heap_malloc',['../group__heap.html#ga9cbed01e42c0647907295de92c3fa296',1,'mimalloc-doc.h']]], ['mi_5fheap_5fcheck_5fowned_24',['mi_heap_check_owned',['../group__analysis.html#ga0d67c1789faaa15ff366c024fcaf6377',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmalloc_5faligned_198',['mi_heap_malloc_aligned',['../group__heap.html#gab5b87e1805306f70df38789fcfcf6653',1,'mimalloc-doc.h']]], ['mi_5fheap_5fcollect_25',['mi_heap_collect',['../group__heap.html#ga7922f7495cde30b1984d0e6072419298',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmalloc_5faligned_5fat_199',['mi_heap_malloc_aligned_at',['../group__heap.html#ga23acd7680fb0976dde3783254c6c874b',1,'mimalloc-doc.h']]], ['mi_5fheap_5fcontains_5fblock_26',['mi_heap_contains_block',['../group__analysis.html#gaa862aa8ed8d57d84cae41fc1022d71af',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmalloc_5fsmall_200',['mi_heap_malloc_small',['../group__heap.html#gaa1a1c7a1f4da6826b5a25b70ef878368',1,'mimalloc-doc.h']]], ['mi_5fheap_5fdelete_27',['mi_heap_delete',['../group__heap.html#ga2ab1af8d438819b55319c7ef51d1e409',1,'mimalloc-doc.h']]],
['mi_5fheap_5fmallocn_201',['mi_heap_mallocn',['../group__heap.html#ga851da6c43fe0b71c1376cee8aef90db0',1,'mimalloc-doc.h']]], ['mi_5fheap_5fdestroy_28',['mi_heap_destroy',['../group__heap.html#ga9f9c0844edb9717f4feacd79116b8e0d',1,'mimalloc-doc.h']]],
['mi_5fheap_5fnew_202',['mi_heap_new',['../group__heap.html#ga766f672ba56f2fbfeb9d9dbb0b7f6b11',1,'mimalloc-doc.h']]], ['mi_5fheap_5fget_5fbacking_29',['mi_heap_get_backing',['../group__heap.html#gac6ac9f0e7be9ab4ff70acfc8dad1235a',1,'mimalloc-doc.h']]],
['mi_5fheap_5frealloc_203',['mi_heap_realloc',['../group__heap.html#gaaef3395f66be48f37bdc8322509c5d81',1,'mimalloc-doc.h']]], ['mi_5fheap_5fget_5fdefault_30',['mi_heap_get_default',['../group__heap.html#ga14c667a6e2c5d28762d8cb7d4e057909',1,'mimalloc-doc.h']]],
['mi_5fheap_5frealloc_5faligned_204',['mi_heap_realloc_aligned',['../group__heap.html#gafc603b696bd14cae6da28658f950d98c',1,'mimalloc-doc.h']]], ['mi_5fheap_5fmalloc_31',['mi_heap_malloc',['../group__heap.html#gab374e206c7034e0d899fb934e4f4a863',1,'mimalloc-doc.h']]],
['mi_5fheap_5frealloc_5faligned_5fat_205',['mi_heap_realloc_aligned_at',['../group__heap.html#gaf96c788a1bf553fe2d371de9365e047c',1,'mimalloc-doc.h']]], ['mi_5fheap_5fmalloc_5faligned_32',['mi_heap_malloc_aligned',['../group__heap.html#ga33f4f05b7fea7af2113c62a4bf882cc5',1,'mimalloc-doc.h']]],
['mi_5fheap_5freallocf_206',['mi_heap_reallocf',['../group__heap.html#ga4a21070eb4e7cce018133c8d5f4b0527',1,'mimalloc-doc.h']]], ['mi_5fheap_5fmalloc_5faligned_5fat_33',['mi_heap_malloc_aligned_at',['../group__heap.html#gae7ffc045c3996497a7f3a5f6fe7b8aaa',1,'mimalloc-doc.h']]],
['mi_5fheap_5freallocn_207',['mi_heap_reallocn',['../group__heap.html#gac74e94ad9b0c9b57c1c4d88b8825b7a8',1,'mimalloc-doc.h']]], ['mi_5fheap_5fmalloc_5fsmall_34',['mi_heap_malloc_small',['../group__heap.html#ga012c5c8abe22b10043de39ff95909541',1,'mimalloc-doc.h']]],
['mi_5fheap_5frealpath_208',['mi_heap_realpath',['../group__heap.html#ga00e95ba1e01acac3cfd95bb7a357a6f0',1,'mimalloc-doc.h']]], ['mi_5fheap_5fmallocn_35',['mi_heap_mallocn',['../group__heap.html#gab0f755c0b21c387fe8e9024200faa372',1,'mimalloc-doc.h']]],
['mi_5fheap_5frecalloc_209',['mi_heap_recalloc',['../group__zeroinit.html#ga8648c5fbb22a80f0262859099f06dfbd',1,'mimalloc-doc.h']]], ['mi_5fheap_5fnew_36',['mi_heap_new',['../group__heap.html#gaa718bb226ec0546ba6d1b6cb32179f3a',1,'mimalloc-doc.h']]],
['mi_5fheap_5frecalloc_5faligned_210',['mi_heap_recalloc_aligned',['../group__zeroinit.html#ga9f3f999396c8f77ca5e80e7b40ac29e3',1,'mimalloc-doc.h']]], ['mi_5fheap_5fnew_5fex_37',['mi_heap_new_ex',['../group__extended.html#ga3ae360583f4351aa5267ee7e43008faf',1,'mimalloc-doc.h']]],
['mi_5fheap_5frecalloc_5faligned_5fat_211',['mi_heap_recalloc_aligned_at',['../group__zeroinit.html#ga496452c96f1de8c500be9fddf52edaf7',1,'mimalloc-doc.h']]], ['mi_5fheap_5fnew_5fin_5farena_38',['mi_heap_new_in_arena',['../group__extended.html#gaaf2d9976576d5efd5544be12848af949',1,'mimalloc-doc.h']]],
['mi_5fheap_5frezalloc_212',['mi_heap_rezalloc',['../group__zeroinit.html#gacfad83f14eb5d6a42a497a898e19fc76',1,'mimalloc-doc.h']]], ['mi_5fheap_5frealloc_39',['mi_heap_realloc',['../group__heap.html#gac5252d6a2e510bd349e4fcb452e6a93a',1,'mimalloc-doc.h']]],
['mi_5fheap_5frezalloc_5faligned_213',['mi_heap_rezalloc_aligned',['../group__zeroinit.html#ga375fa8a611c51905e592d5d467c49664',1,'mimalloc-doc.h']]], ['mi_5fheap_5frealloc_5faligned_40',['mi_heap_realloc_aligned',['../group__heap.html#gaccf8c249872f30bf1c2493a09197d734',1,'mimalloc-doc.h']]],
['mi_5fheap_5frezalloc_5faligned_5fat_214',['mi_heap_rezalloc_aligned_at',['../group__zeroinit.html#gac90da54fa7e5d10bdc97ce0b51dce2eb',1,'mimalloc-doc.h']]], ['mi_5fheap_5frealloc_5faligned_5fat_41',['mi_heap_realloc_aligned_at',['../group__heap.html#ga6df988a7219d5707f010d5f3eb0dc3f5',1,'mimalloc-doc.h']]],
['mi_5fheap_5fset_5fdefault_215',['mi_heap_set_default',['../group__heap.html#gab8631ec88c8d26641b68b5d25dcd4422',1,'mimalloc-doc.h']]], ['mi_5fheap_5freallocf_42',['mi_heap_reallocf',['../group__heap.html#gae7cd171425bee04c683c65a3701f0b4a',1,'mimalloc-doc.h']]],
['mi_5fheap_5fstrdup_216',['mi_heap_strdup',['../group__heap.html#ga139d6b09dbf50c3c2523d0f4d1cfdeb5',1,'mimalloc-doc.h']]], ['mi_5fheap_5freallocn_43',['mi_heap_reallocn',['../group__heap.html#gaccf7bfe10ce510a000d3547d9cf7fa29',1,'mimalloc-doc.h']]],
['mi_5fheap_5fstrndup_217',['mi_heap_strndup',['../group__heap.html#ga8e3dbd46650dd26573cf307a2c8f1f5a',1,'mimalloc-doc.h']]], ['mi_5fheap_5frealpath_44',['mi_heap_realpath',['../group__heap.html#ga55545a3ec6da29c5b4f62e540ecac1e2',1,'mimalloc-doc.h']]],
['mi_5fheap_5fvisit_5fblocks_218',['mi_heap_visit_blocks',['../group__analysis.html#ga70c46687dc6e9dc98b232b02646f8bed',1,'mimalloc-doc.h']]], ['mi_5fheap_5frecalloc_45',['mi_heap_recalloc',['../group__zeroinit.html#gad1a0d325d930eeb80f25e3fea37aacde',1,'mimalloc-doc.h']]],
['mi_5fheap_5fzalloc_219',['mi_heap_zalloc',['../group__heap.html#ga903104592c8ed53417a3762da6241133',1,'mimalloc-doc.h']]], ['mi_5fheap_5frecalloc_5faligned_46',['mi_heap_recalloc_aligned',['../group__zeroinit.html#ga87ddd674bf1c67237d780d0b9e0f0f32',1,'mimalloc-doc.h']]],
['mi_5fheap_5fzalloc_5faligned_220',['mi_heap_zalloc_aligned',['../group__heap.html#gaa450a59c6c7ae5fdbd1c2b80a8329ef0',1,'mimalloc-doc.h']]], ['mi_5fheap_5frecalloc_5faligned_5fat_47',['mi_heap_recalloc_aligned_at',['../group__zeroinit.html#ga07b5bcbaf00d0d2e598c232982588496',1,'mimalloc-doc.h']]],
['mi_5fheap_5fzalloc_5faligned_5fat_221',['mi_heap_zalloc_aligned_at',['../group__heap.html#ga45fb43a62776fbebbdf1edd99b527954',1,'mimalloc-doc.h']]], ['mi_5fheap_5frezalloc_48',['mi_heap_rezalloc',['../group__zeroinit.html#ga8d8b7ebb24b513cd84d1a696048da60d',1,'mimalloc-doc.h']]],
['mi_5fis_5fin_5fheap_5fregion_222',['mi_is_in_heap_region',['../group__extended.html#ga5f071b10d4df1c3658e04e7fd67a94e6',1,'mimalloc-doc.h']]], ['mi_5fheap_5frezalloc_5faligned_49',['mi_heap_rezalloc_aligned',['../group__zeroinit.html#ga5129f6dc46ee1613d918820a8a0533a7',1,'mimalloc-doc.h']]],
['mi_5fis_5fredirected_223',['mi_is_redirected',['../group__extended.html#gaad25050b19f30cd79397b227e0157a3f',1,'mimalloc-doc.h']]], ['mi_5fheap_5frezalloc_5faligned_5fat_50',['mi_heap_rezalloc_aligned_at',['../group__zeroinit.html#ga2bafa79c3f98ea74882349d44cffa5d9',1,'mimalloc-doc.h']]],
['mi_5fmalloc_224',['mi_malloc',['../group__malloc.html#ga3406e8b168bc74c8637b11571a6da83a',1,'mimalloc-doc.h']]], ['mi_5fheap_5fset_5fdefault_51',['mi_heap_set_default',['../group__heap.html#ga349b677dec7da5eacdbc7a385bd62a4a',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5faligned_225',['mi_malloc_aligned',['../group__aligned.html#ga68930196751fa2cca9e1fd0d71bade56',1,'mimalloc-doc.h']]], ['mi_5fheap_5fstrdup_52',['mi_heap_strdup',['../group__heap.html#ga5754e09ccc51dd6bc73885bb6ea21b7a',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5faligned_5fat_226',['mi_malloc_aligned_at',['../group__aligned.html#ga5850da130c936bd77db039dcfbc8295d',1,'mimalloc-doc.h']]], ['mi_5fheap_5fstrndup_53',['mi_heap_strndup',['../group__heap.html#gad224df78f1fbee942df8adf023e12cf3',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5fsize_227',['mi_malloc_size',['../group__posix.html#ga4531c9e775bb3ae12db57c1ba8a5d7de',1,'mimalloc-doc.h']]], ['mi_5fheap_5fvisit_5fblocks_54',['mi_heap_visit_blocks',['../group__analysis.html#ga70c46687dc6e9dc98b232b02646f8bed',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5fsmall_228',['mi_malloc_small',['../group__extended.html#ga7136c2e55cb22c98ecf95d08d6debb99',1,'mimalloc-doc.h']]], ['mi_5fheap_5fzalloc_55',['mi_heap_zalloc',['../group__heap.html#gabebc796399619d964d8db77aa835e8c1',1,'mimalloc-doc.h']]],
['mi_5fmalloc_5fusable_5fsize_229',['mi_malloc_usable_size',['../group__posix.html#ga06d07cf357bbac5c73ba5d0c0c421e17',1,'mimalloc-doc.h']]], ['mi_5fheap_5fzalloc_5faligned_56',['mi_heap_zalloc_aligned',['../group__heap.html#ga6466bde8b5712aa34e081a8317f9f471',1,'mimalloc-doc.h']]],
['mi_5fmallocn_230',['mi_mallocn',['../group__malloc.html#ga0b05e2bf0f73e7401ae08597ff782ac6',1,'mimalloc-doc.h']]], ['mi_5fheap_5fzalloc_5faligned_5fat_57',['mi_heap_zalloc_aligned_at',['../group__heap.html#ga484e3d01cd174f78c7e53370e5a7c819',1,'mimalloc-doc.h']]],
['mi_5fmanage_5fos_5fmemory_231',['mi_manage_os_memory',['../group__extended.html#ga4c6486a1fdcd7a423b5f25fe4be8e0cf',1,'mimalloc-doc.h']]], ['mi_5fis_5fin_5fheap_5fregion_58',['mi_is_in_heap_region',['../group__extended.html#ga5f071b10d4df1c3658e04e7fd67a94e6',1,'mimalloc-doc.h']]],
['mi_5fmemalign_232',['mi_memalign',['../group__posix.html#gaab7fa71ea93b96873f5d9883db57d40e',1,'mimalloc-doc.h']]], ['mi_5fis_5fredirected_59',['mi_is_redirected',['../group__extended.html#gaad25050b19f30cd79397b227e0157a3f',1,'mimalloc-doc.h']]],
['mi_5fnew_233',['mi_new',['../group__cpp.html#gaad048a9fce3d02c5909cd05c6ec24545',1,'mimalloc-doc.h']]], ['mi_5fmalloc_60',['mi_malloc',['../group__malloc.html#gae1dd97b542420c87ae085e822b1229e8',1,'mimalloc-doc.h']]],
['mi_5fnew_5faligned_234',['mi_new_aligned',['../group__cpp.html#gaef2c2bdb4f70857902d3c8903ac095f3',1,'mimalloc-doc.h']]], ['mi_5fmalloc_5faligned_61',['mi_malloc_aligned',['../group__aligned.html#ga69578ff1a98ca16e1dcd02c0995cd65c',1,'mimalloc-doc.h']]],
['mi_5fnew_5faligned_5fnothrow_235',['mi_new_aligned_nothrow',['../group__cpp.html#gab5e29558926d934c3f1cae8c815f942c',1,'mimalloc-doc.h']]], ['mi_5fmalloc_5faligned_5fat_62',['mi_malloc_aligned_at',['../group__aligned.html#ga2022f71b95a7cd6cce1b6e07752ae8ca',1,'mimalloc-doc.h']]],
['mi_5fnew_5fn_236',['mi_new_n',['../group__cpp.html#gae7bc4f56cd57ed3359060ff4f38bda81',1,'mimalloc-doc.h']]], ['mi_5fmalloc_5fgood_5fsize_63',['mi_malloc_good_size',['../group__posix.html#ga9d23ac7885fed7413c11d8e0ffa31071',1,'mimalloc-doc.h']]],
['mi_5fnew_5fnothrow_237',['mi_new_nothrow',['../group__cpp.html#gaeaded64eda71ed6b1d569d3e723abc4a',1,'mimalloc-doc.h']]], ['mi_5fmalloc_5fsize_64',['mi_malloc_size',['../group__posix.html#ga4531c9e775bb3ae12db57c1ba8a5d7de',1,'mimalloc-doc.h']]],
['mi_5fnew_5frealloc_238',['mi_new_realloc',['../group__cpp.html#gaab78a32f55149e9fbf432d5288e38e1e',1,'mimalloc-doc.h']]], ['mi_5fmalloc_5fsmall_65',['mi_malloc_small',['../group__extended.html#ga7f050bc6b897da82692174f5fce59cde',1,'mimalloc-doc.h']]],
['mi_5fnew_5freallocn_239',['mi_new_reallocn',['../group__cpp.html#ga756f4b2bc6a7ecd0a90baea8e90c7907',1,'mimalloc-doc.h']]], ['mi_5fmalloc_5fusable_5fsize_66',['mi_malloc_usable_size',['../group__posix.html#ga06d07cf357bbac5c73ba5d0c0c421e17',1,'mimalloc-doc.h']]],
['mi_5foption_5fdisable_240',['mi_option_disable',['../group__options.html#gaebf6ff707a2e688ebb1a2296ca564054',1,'mimalloc-doc.h']]], ['mi_5fmallocn_67',['mi_mallocn',['../group__malloc.html#ga61f46bade3db76ca24aaafedc40de7b6',1,'mimalloc-doc.h']]],
['mi_5foption_5fenable_241',['mi_option_enable',['../group__options.html#ga04180ae41b0d601421dd62ced40ca050',1,'mimalloc-doc.h']]], ['mi_5fmanage_5fos_5fmemory_68',['mi_manage_os_memory',['../group__extended.html#ga4c6486a1fdcd7a423b5f25fe4be8e0cf',1,'mimalloc-doc.h']]],
['mi_5foption_5fget_242',['mi_option_get',['../group__options.html#ga7e8af195cc81d3fa64ccf2662caa565a',1,'mimalloc-doc.h']]], ['mi_5fmanage_5fos_5fmemory_5fex_69',['mi_manage_os_memory_ex',['../group__extended.html#ga41ce8525d77bbb60f618fa1029994f6e',1,'mimalloc-doc.h']]],
['mi_5foption_5fis_5fenabled_243',['mi_option_is_enabled',['../group__options.html#ga459ad98f18b3fc9275474807fe0ca188',1,'mimalloc-doc.h']]], ['mi_5fmbsdup_70',['mi_mbsdup',['../group__posix.html#ga7b82a44094fdec4d2084eb4288a979b0',1,'mimalloc-doc.h']]],
['mi_5foption_5fset_244',['mi_option_set',['../group__options.html#gaf84921c32375e25754dc2ee6a911fa60',1,'mimalloc-doc.h']]], ['mi_5fmemalign_71',['mi_memalign',['../group__posix.html#ga726867f13fd29ca36064954c0285b1d8',1,'mimalloc-doc.h']]],
['mi_5foption_5fset_5fdefault_245',['mi_option_set_default',['../group__options.html#ga7ef623e440e6e5545cb08c94e71e4b90',1,'mimalloc-doc.h']]], ['mi_5fnew_72',['mi_new',['../group__cpp.html#ga633d96e3bc7011f960df9f3b2731fc6a',1,'mimalloc-doc.h']]],
['mi_5foption_5fset_5fenabled_246',['mi_option_set_enabled',['../group__options.html#ga9a13d05fcb77489cb06d4d017ebd8bed',1,'mimalloc-doc.h']]], ['mi_5fnew_5faligned_73',['mi_new_aligned',['../group__cpp.html#ga79c54da0b4b4ce9fcc11d2f6ef6675f8',1,'mimalloc-doc.h']]],
['mi_5foption_5fset_5fenabled_5fdefault_247',['mi_option_set_enabled_default',['../group__options.html#ga65518b69ec5d32336b50e07f74b3f629',1,'mimalloc-doc.h']]], ['mi_5fnew_5faligned_5fnothrow_74',['mi_new_aligned_nothrow',['../group__cpp.html#ga92ae00b6dd64406c7e64557711ec04b7',1,'mimalloc-doc.h']]],
['mi_5fposix_5fmemalign_248',['mi_posix_memalign',['../group__posix.html#gacff84f226ba9feb2031b8992e5579447',1,'mimalloc-doc.h']]], ['mi_5fnew_5fn_75',['mi_new_n',['../group__cpp.html#gadd11b85c15d21d308386844b5233856c',1,'mimalloc-doc.h']]],
['mi_5fprocess_5finfo_249',['mi_process_info',['../group__extended.html#ga7d862c2affd5790381da14eb102a364d',1,'mimalloc-doc.h']]], ['mi_5fnew_5fnothrow_76',['mi_new_nothrow',['../group__cpp.html#ga5cb4f120d1f7296074256215aa9a9e54',1,'mimalloc-doc.h']]],
['mi_5fpvalloc_250',['mi_pvalloc',['../group__posix.html#gaeb325c39b887d3b90d85d1eb1712fb1e',1,'mimalloc-doc.h']]], ['mi_5fnew_5frealloc_77',['mi_new_realloc',['../group__cpp.html#ga6867d89baf992728e0cc20a1f47db4d0',1,'mimalloc-doc.h']]],
['mi_5frealloc_251',['mi_realloc',['../group__malloc.html#gaf11eb497da57bdfb2de65eb191c69db6',1,'mimalloc-doc.h']]], ['mi_5fnew_5freallocn_78',['mi_new_reallocn',['../group__cpp.html#gaace912ce086682d56f3ce9f7638d9d67',1,'mimalloc-doc.h']]],
['mi_5frealloc_5faligned_252',['mi_realloc_aligned',['../group__aligned.html#ga4028d1cf4aa4c87c880747044a8322ae',1,'mimalloc-doc.h']]], ['mi_5foption_5fdisable_79',['mi_option_disable',['../group__options.html#gaebf6ff707a2e688ebb1a2296ca564054',1,'mimalloc-doc.h']]],
['mi_5frealloc_5faligned_5fat_253',['mi_realloc_aligned_at',['../group__aligned.html#gaf66a9ae6c6f08bd6be6fb6ea771faffb',1,'mimalloc-doc.h']]], ['mi_5foption_5fenable_80',['mi_option_enable',['../group__options.html#ga04180ae41b0d601421dd62ced40ca050',1,'mimalloc-doc.h']]],
['mi_5freallocarr_254',['mi_reallocarr',['../group__posix.html#ga7e1934d60a3e697950eeb48e042bfad5',1,'mimalloc-doc.h']]], ['mi_5foption_5fget_81',['mi_option_get',['../group__options.html#ga7e8af195cc81d3fa64ccf2662caa565a',1,'mimalloc-doc.h']]],
['mi_5freallocarray_255',['mi_reallocarray',['../group__posix.html#ga48fad8648a2f1dab9c87ea9448a52088',1,'mimalloc-doc.h']]], ['mi_5foption_5fget_5fclamp_82',['mi_option_get_clamp',['../group__options.html#ga96ad9c406338bd314cfe878cfc9bf723',1,'mimalloc-doc.h']]],
['mi_5freallocf_256',['mi_reallocf',['../group__malloc.html#gafe68ac7c5e24a65cd55c9d6b152211a0',1,'mimalloc-doc.h']]], ['mi_5foption_5fget_5fsize_83',['mi_option_get_size',['../group__options.html#ga274db5a6ac87cc24ef0b23e7006ed02c',1,'mimalloc-doc.h']]],
['mi_5freallocn_257',['mi_reallocn',['../group__malloc.html#ga61d57b4144ba24fba5c1e9b956d13853',1,'mimalloc-doc.h']]], ['mi_5foption_5fis_5fenabled_84',['mi_option_is_enabled',['../group__options.html#ga459ad98f18b3fc9275474807fe0ca188',1,'mimalloc-doc.h']]],
['mi_5frealpath_258',['mi_realpath',['../group__malloc.html#ga08cec32dd5bbe7da91c78d19f1b5bebe',1,'mimalloc-doc.h']]], ['mi_5foption_5fset_85',['mi_option_set',['../group__options.html#gaf84921c32375e25754dc2ee6a911fa60',1,'mimalloc-doc.h']]],
['mi_5frecalloc_259',['mi_recalloc',['../group__malloc.html#ga23a0fbb452b5dce8e31fab1a1958cacc',1,'mimalloc-doc.h']]], ['mi_5foption_5fset_5fdefault_86',['mi_option_set_default',['../group__options.html#ga7ef623e440e6e5545cb08c94e71e4b90',1,'mimalloc-doc.h']]],
['mi_5frecalloc_5faligned_260',['mi_recalloc_aligned',['../group__zeroinit.html#ga3e7e5c291acf1c7fd7ffd9914a9f945f',1,'mimalloc-doc.h']]], ['mi_5foption_5fset_5fenabled_87',['mi_option_set_enabled',['../group__options.html#ga9a13d05fcb77489cb06d4d017ebd8bed',1,'mimalloc-doc.h']]],
['mi_5frecalloc_5faligned_5fat_261',['mi_recalloc_aligned_at',['../group__zeroinit.html#ga4ff5e92ad73585418a072c9d059e5cf9',1,'mimalloc-doc.h']]], ['mi_5foption_5fset_5fenabled_5fdefault_88',['mi_option_set_enabled_default',['../group__options.html#ga65518b69ec5d32336b50e07f74b3f629',1,'mimalloc-doc.h']]],
['mi_5fregister_5fdeferred_5ffree_262',['mi_register_deferred_free',['../group__extended.html#ga3460a6ca91af97be4058f523d3cb8ece',1,'mimalloc-doc.h']]], ['mi_5fposix_5fmemalign_89',['mi_posix_memalign',['../group__posix.html#gacff84f226ba9feb2031b8992e5579447',1,'mimalloc-doc.h']]],
['mi_5fregister_5ferror_263',['mi_register_error',['../group__extended.html#gaa1d55e0e894be240827e5d87ec3a1f45',1,'mimalloc-doc.h']]], ['mi_5fprocess_5finfo_90',['mi_process_info',['../group__extended.html#ga7d862c2affd5790381da14eb102a364d',1,'mimalloc-doc.h']]],
['mi_5fregister_5foutput_264',['mi_register_output',['../group__extended.html#gae5b17ff027cd2150b43a33040250cf3f',1,'mimalloc-doc.h']]], ['mi_5fpvalloc_91',['mi_pvalloc',['../group__posix.html#ga644bebccdbb2821542dd8c7e7641f476',1,'mimalloc-doc.h']]],
['mi_5freserve_5fhuge_5fos_5fpages_5fat_265',['mi_reserve_huge_os_pages_at',['../group__extended.html#ga7795a13d20087447281858d2c771cca1',1,'mimalloc-doc.h']]], ['mi_5frealloc_92',['mi_realloc',['../group__malloc.html#ga0621af6a5e3aa384e6a1b548958bf583',1,'mimalloc-doc.h']]],
['mi_5freserve_5fhuge_5fos_5fpages_5finterleave_266',['mi_reserve_huge_os_pages_interleave',['../group__extended.html#ga3132f521fb756fc0e8ec0b74fb58df50',1,'mimalloc-doc.h']]], ['mi_5frealloc_5faligned_93',['mi_realloc_aligned',['../group__aligned.html#ga5d7a46d054b4d7abe9d8d2474add2edf',1,'mimalloc-doc.h']]],
['mi_5freserve_5fos_5fmemory_267',['mi_reserve_os_memory',['../group__extended.html#ga00ec3324b6b2591c7fe3677baa30a767',1,'mimalloc-doc.h']]], ['mi_5frealloc_5faligned_5fat_94',['mi_realloc_aligned_at',['../group__aligned.html#gad06dcf2bb8faadb2c8ea61ee5d24bbf6',1,'mimalloc-doc.h']]],
['mi_5frezalloc_268',['mi_rezalloc',['../group__zeroinit.html#ga8c292e142110229a2980b37ab036dbc6',1,'mimalloc-doc.h']]], ['mi_5freallocarr_95',['mi_reallocarr',['../group__posix.html#ga7e1934d60a3e697950eeb48e042bfad5',1,'mimalloc-doc.h']]],
['mi_5frezalloc_5faligned_269',['mi_rezalloc_aligned',['../group__zeroinit.html#gacd71a7bce96aab38ae6de17af2eb2cf0',1,'mimalloc-doc.h']]], ['mi_5freallocarray_96',['mi_reallocarray',['../group__posix.html#gadfeccb72748a2f6305474a37d9d57bce',1,'mimalloc-doc.h']]],
['mi_5frezalloc_5faligned_5fat_270',['mi_rezalloc_aligned_at',['../group__zeroinit.html#gae8b358c417e61d5307da002702b0a8e1',1,'mimalloc-doc.h']]], ['mi_5freallocf_97',['mi_reallocf',['../group__malloc.html#ga4dc3a4067037b151a64629fe8a332641',1,'mimalloc-doc.h']]],
['mi_5fstats_5fmerge_271',['mi_stats_merge',['../group__extended.html#ga854b1de8cb067c7316286c28b2fcd3d1',1,'mimalloc-doc.h']]], ['mi_5freallocn_98',['mi_reallocn',['../group__malloc.html#ga8bddfb4a1270a0854bbcf44cb3980467',1,'mimalloc-doc.h']]],
['mi_5fstats_5fprint_272',['mi_stats_print',['../group__extended.html#ga2d126e5c62d3badc35445e5d84166df2',1,'mimalloc-doc.h']]], ['mi_5frealpath_99',['mi_realpath',['../group__malloc.html#ga94c3afcc086e85d75a57e9f76b9b71dd',1,'mimalloc-doc.h']]],
['mi_5fstats_5fprint_5fout_273',['mi_stats_print_out',['../group__extended.html#ga537f13b299ddf801e49a5a94fde02c79',1,'mimalloc-doc.h']]], ['mi_5frecalloc_100',['mi_recalloc',['../group__malloc.html#ga23a0fbb452b5dce8e31fab1a1958cacc',1,'mimalloc-doc.h']]],
['mi_5fstats_5freset_274',['mi_stats_reset',['../group__extended.html#ga3bb8468b8cfcc6e2a61d98aee85c5f99',1,'mimalloc-doc.h']]], ['mi_5frecalloc_5faligned_101',['mi_recalloc_aligned',['../group__zeroinit.html#ga3e2169b48683aa0ab64f813fd68d839e',1,'mimalloc-doc.h']]],
['mi_5fstrdup_275',['mi_strdup',['../group__malloc.html#gac7cffe13f1f458ed16789488bf92b9b2',1,'mimalloc-doc.h']]], ['mi_5frecalloc_5faligned_5fat_102',['mi_recalloc_aligned_at',['../group__zeroinit.html#gaae25e4ddedd4e0fb61b1a8bd5d452750',1,'mimalloc-doc.h']]],
['mi_5fstrndup_276',['mi_strndup',['../group__malloc.html#gaaabf971c2571891433477e2d21a35266',1,'mimalloc-doc.h']]], ['mi_5fregister_5fdeferred_5ffree_103',['mi_register_deferred_free',['../group__extended.html#ga3460a6ca91af97be4058f523d3cb8ece',1,'mimalloc-doc.h']]],
['mi_5fthread_5fdone_277',['mi_thread_done',['../group__extended.html#ga0ae4581e85453456a0d658b2b98bf7bf',1,'mimalloc-doc.h']]], ['mi_5fregister_5ferror_104',['mi_register_error',['../group__extended.html#gaa1d55e0e894be240827e5d87ec3a1f45',1,'mimalloc-doc.h']]],
['mi_5fthread_5finit_278',['mi_thread_init',['../group__extended.html#gaf8e73efc2cbca9ebfdfb166983a04c17',1,'mimalloc-doc.h']]], ['mi_5fregister_5foutput_105',['mi_register_output',['../group__extended.html#gae5b17ff027cd2150b43a33040250cf3f',1,'mimalloc-doc.h']]],
['mi_5fthread_5fstats_5fprint_5fout_279',['mi_thread_stats_print_out',['../group__extended.html#gab1dac8476c46cb9eecab767eb40c1525',1,'mimalloc-doc.h']]], ['mi_5freserve_5fhuge_5fos_5fpages_5fat_106',['mi_reserve_huge_os_pages_at',['../group__extended.html#ga7795a13d20087447281858d2c771cca1',1,'mimalloc-doc.h']]],
['mi_5fusable_5fsize_280',['mi_usable_size',['../group__extended.html#ga089c859d9eddc5f9b4bd946cd53cebee',1,'mimalloc-doc.h']]], ['mi_5freserve_5fhuge_5fos_5fpages_5fat_5fex_107',['mi_reserve_huge_os_pages_at_ex',['../group__extended.html#ga591aab1c2bc2ca920e33f0f9f9cb5c52',1,'mimalloc-doc.h']]],
['mi_5fvalloc_281',['mi_valloc',['../group__posix.html#ga73baaf5951f5165ba0763d0c06b6a93b',1,'mimalloc-doc.h']]], ['mi_5freserve_5fhuge_5fos_5fpages_5finterleave_108',['mi_reserve_huge_os_pages_interleave',['../group__extended.html#ga3132f521fb756fc0e8ec0b74fb58df50',1,'mimalloc-doc.h']]],
['mi_5fzalloc_282',['mi_zalloc',['../group__malloc.html#gafdd9d8bb2986e668ba9884f28af38000',1,'mimalloc-doc.h']]], ['mi_5freserve_5fos_5fmemory_109',['mi_reserve_os_memory',['../group__extended.html#ga00ec3324b6b2591c7fe3677baa30a767',1,'mimalloc-doc.h']]],
['mi_5fzalloc_5faligned_283',['mi_zalloc_aligned',['../group__aligned.html#ga0cadbcf5b89a7b6fb171bc8df8734819',1,'mimalloc-doc.h']]], ['mi_5freserve_5fos_5fmemory_5fex_110',['mi_reserve_os_memory_ex',['../group__extended.html#ga32f519797fd9a81acb4f52d36e6d751b',1,'mimalloc-doc.h']]],
['mi_5fzalloc_5faligned_5fat_284',['mi_zalloc_aligned_at',['../group__aligned.html#ga5f8c2353766db522565e642fafd8a3f8',1,'mimalloc-doc.h']]], ['mi_5frezalloc_111',['mi_rezalloc',['../group__zeroinit.html#gadfd34cd7b4f2bbda7ae06367a6360756',1,'mimalloc-doc.h']]],
['mi_5fzalloc_5fsmall_285',['mi_zalloc_small',['../group__extended.html#ga220f29f40a44404b0061c15bc1c31152',1,'mimalloc-doc.h']]] ['mi_5frezalloc_5faligned_112',['mi_rezalloc_aligned',['../group__zeroinit.html#ga4d02404fe1e7db00beb65f185e012caa',1,'mimalloc-doc.h']]],
['mi_5frezalloc_5faligned_5fat_113',['mi_rezalloc_aligned_at',['../group__zeroinit.html#ga6843a88285bbfcc3bdfccc60aafd1270',1,'mimalloc-doc.h']]],
['mi_5fstats_5fmerge_114',['mi_stats_merge',['../group__extended.html#ga854b1de8cb067c7316286c28b2fcd3d1',1,'mimalloc-doc.h']]],
['mi_5fstats_5fprint_115',['mi_stats_print',['../group__extended.html#ga2d126e5c62d3badc35445e5d84166df2',1,'mimalloc-doc.h']]],
['mi_5fstats_5fprint_5fout_116',['mi_stats_print_out',['../group__extended.html#ga537f13b299ddf801e49a5a94fde02c79',1,'mimalloc-doc.h']]],
['mi_5fstats_5freset_117',['mi_stats_reset',['../group__extended.html#ga3bb8468b8cfcc6e2a61d98aee85c5f99',1,'mimalloc-doc.h']]],
['mi_5fstrdup_118',['mi_strdup',['../group__malloc.html#ga245ac90ebc2cfdd17de599e5fea59889',1,'mimalloc-doc.h']]],
['mi_5fstrndup_119',['mi_strndup',['../group__malloc.html#ga486d0d26b3b3794f6d1cdb41a9aed92d',1,'mimalloc-doc.h']]],
['mi_5fsubproc_5fadd_5fcurrent_5fthread_120',['mi_subproc_add_current_thread',['../group__extended.html#gadbc53414eb68b275588ec001ce1ddc7c',1,'mimalloc-doc.h']]],
['mi_5fsubproc_5fdelete_121',['mi_subproc_delete',['../group__extended.html#gaa7d263e9429bac9ac8345c9d25de610e',1,'mimalloc-doc.h']]],
['mi_5fsubproc_5fmain_122',['mi_subproc_main',['../group__extended.html#ga2ecba0d7ebdc99e71bb985c4a1609806',1,'mimalloc-doc.h']]],
['mi_5fsubproc_5fnew_123',['mi_subproc_new',['../group__extended.html#ga8068cac328e41fa2170faef707315243',1,'mimalloc-doc.h']]],
['mi_5fthread_5fdone_124',['mi_thread_done',['../group__extended.html#ga0ae4581e85453456a0d658b2b98bf7bf',1,'mimalloc-doc.h']]],
['mi_5fthread_5finit_125',['mi_thread_init',['../group__extended.html#gaf8e73efc2cbca9ebfdfb166983a04c17',1,'mimalloc-doc.h']]],
['mi_5fthread_5fstats_5fprint_5fout_126',['mi_thread_stats_print_out',['../group__extended.html#gab1dac8476c46cb9eecab767eb40c1525',1,'mimalloc-doc.h']]],
['mi_5fusable_5fsize_127',['mi_usable_size',['../group__extended.html#ga089c859d9eddc5f9b4bd946cd53cebee',1,'mimalloc-doc.h']]],
['mi_5fvalloc_128',['mi_valloc',['../group__posix.html#ga50cafb9722020402f065de93799f64ca',1,'mimalloc-doc.h']]],
['mi_5fwcsdup_129',['mi_wcsdup',['../group__posix.html#gaa9fd7f25c9ac3a20e89b33bd6e383fcf',1,'mimalloc-doc.h']]],
['mi_5fwdupenv_5fs_130',['mi_wdupenv_s',['../group__posix.html#ga6ac6a6a8f3c96f1af24bb8d0439cbbd1',1,'mimalloc-doc.h']]],
['mi_5fzalloc_131',['mi_zalloc',['../group__malloc.html#gae6e38c4403247a7b40d80419e093bfb8',1,'mimalloc-doc.h']]],
['mi_5fzalloc_5faligned_132',['mi_zalloc_aligned',['../group__aligned.html#gaac7d0beb782f9b9ac31f47492b130f82',1,'mimalloc-doc.h']]],
['mi_5fzalloc_5faligned_5fat_133',['mi_zalloc_aligned_at',['../group__aligned.html#ga7c1778805ce50ebbf02ccbd5e39d5dba',1,'mimalloc-doc.h']]],
['mi_5fzalloc_5fsmall_134',['mi_zalloc_small',['../group__extended.html#ga51c47637e81df0e2f13a2d7a2dec123e',1,'mimalloc-doc.h']]]
]; ];

View file

@ -1,4 +1,6 @@
var searchData= var searchData=
[ [
['aligned_20allocation_314',['Aligned Allocation',['../group__aligned.html',1,'']]] ['aligned_20allocation_0',['Aligned Allocation',['../group__aligned.html',1,'']]],
['allocation_1',['Allocation',['../group__aligned.html',1,'Aligned Allocation'],['../group__malloc.html',1,'Basic Allocation'],['../group__heap.html',1,'Heap Allocation']]],
['allocation_2',['Zero initialized re-allocation',['../group__zeroinit.html',1,'']]]
]; ];

View file

@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['basic_20allocation_315',['Basic Allocation',['../group__malloc.html',1,'']]] ['basic_20allocation_0',['Basic Allocation',['../group__malloc.html',1,'']]]
]; ];

View file

@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['c_2b_2b_20wrappers_316',['C++ wrappers',['../group__cpp.html',1,'']]] ['c_20wrappers_0',['C++ wrappers',['../group__cpp.html',1,'']]]
]; ];

View file

@ -1,4 +1,4 @@
var searchData= var searchData=
[ [
['extended_20functions_317',['Extended Functions',['../group__extended.html',1,'']]] ['extended_20functions_0',['Extended Functions',['../group__extended.html',1,'']]]
]; ];

View file

@ -1,5 +1,4 @@
var searchData= var searchData=
[ [
['heap_20allocation_318',['Heap Allocation',['../group__heap.html',1,'']]], ['functions_0',['Extended Functions',['../group__extended.html',1,'']]]
['heap_20introspection_319',['Heap Introspection',['../group__analysis.html',1,'']]]
]; ];

View file

@ -1,4 +1,5 @@
var searchData= var searchData=
[ [
['posix_320',['Posix',['../group__posix.html',1,'']]] ['heap_20allocation_0',['Heap Allocation',['../group__heap.html',1,'']]],
['heap_20introspection_1',['Heap Introspection',['../group__analysis.html',1,'']]]
]; ];

Some files were not shown because too many files have changed in this diff Show more