diff --git a/docs/overrides.html b/docs/overrides.html index 0e7fd0ec..fc0ad591 100644 --- a/docs/overrides.html +++ b/docs/overrides.html @@ -118,7 +118,7 @@ $(document).ready(function(){initNavTree('overrides.html',''); initResizable();
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.
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 /MD
or /MDd
switch). Also, the mimalloc-redirect.dll
(or mimalloc-redirect32.dll
) must be available in the same folder as the main mimalloc-override.dll
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 mimalloc-override.dll
).
To ensure the mimalloc DLL is loaded at run-time it is easiest to insert some call to the mimalloc API in the main
function, like mi_version()
(or use the /INCLUDE:mi_version
switch on the linker). See the mimalloc-override-test
project for an example on how to use this. For best performance on Windows with C++, it is also recommended to also override the new
/delete
operations (by including mimalloc-new-delete.h
a single(!) source file in your project).
To ensure the mimalloc DLL is loaded at run-time it is easiest to insert some call to the mimalloc API in the main
function, like mi_version()
(or use the /INCLUDE:mi_version
switch on the linker). See the mimalloc-override-test
project for an example on how to use this. For best performance on Windows with C++, it is also recommended to also override the new
/delete
operations (by including mimalloc-new-delete.h
a single(!) source file in your project without linking to the mimalloc library).
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.
(Note: in principle, it is possible to even patch existing executables without any recompilation if they are linked with the dynamic C runtime (ucrtbase.dll
) – just put the mimalloc-override.dll
into the import table (and put mimalloc-redirect.dll
in the same folder) Such patching can be done for example with CFF Explorer).
to link with the shared (dynamic) library, or:
to link with the static library. See test\CMakeLists.txt
for an example.
For best performance in C++ programs, it is also recommended to override the global new
and delete
operators. For convience, mimalloc provides mimalloc-new-delete.h
which does this for you – just include it in a single(!) source file in your project.
For best performance in C++ programs, it is also recommended to override the global new
and delete
operators. For convience, mimalloc provides mimalloc-new-delete.h
which does this for you – just include it in a single(!) source file in your project without linking to the mimalloc's library.
In C++, mimalloc also provides the mi_stl_allocator
struct which implements the std::allocator
interface. For example: