Module alloc
Memory allocation APIs.
In a given program, the standard library has one “global” memory allocator
that is used for example by Box<T> and Vec<T>.
Currently the default global allocator is unspecified. Libraries, however,
like cdylibs and staticlibs are guaranteed to use the System by
default.
The #[global_allocator] attribute
This attribute allows configuring the choice of global allocator. You can use this to implement a completely custom global allocator to route all1 default allocation requests to a custom object.
use ;
;
unsafe
static GLOBAL: MyAllocator = MyAllocator;
The attribute is used on a static item whose type implements the
GlobalAlloc trait. This type can be provided by an external library:
use Jemalloc;
static GLOBAL: Jemalloc = Jemalloc;
The #[global_allocator] can only be used once in a crate
or its recursive dependencies.
-
Note that the Rust standard library internals may still directly call
Systemwhen necessary (for example for the runtime support typically required to implement a global allocator, see re-entrance onGlobalAllocfor more details). ↩
Structs
- System The default memory allocator provided by the operating system.
Functions
- set_alloc_error_hook Registers a custom allocation error hook, replacing any that was previously registered.
- take_alloc_error_hook Unregisters the current allocation error hook, returning it.