Expand description
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 all default allocation requests to a custom object.
use std::alloc::{GlobalAlloc, System, Layout};
struct MyAllocator;
unsafe impl GlobalAlloc for MyAllocator {
    unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
        unsafe { System.alloc(layout) }
    }
    unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
        unsafe { System.dealloc(ptr, layout) }
    }
}
#[global_allocator]
static GLOBAL: MyAllocator = MyAllocator;
fn main() {
    // This `Vec` will allocate memory through `GLOBAL` above
    let mut v = Vec::new();
    v.push(1);
}The attribute is used on a static item whose type implements the
GlobalAlloc trait. This type can be provided by an external library:
The #[global_allocator] can only be used once in a crate
or its recursive dependencies.
Structs§
- Layout
 - Layout of a block of memory.
 - Layout
Error  - The 
LayoutErroris returned when the parameters given toLayout::from_size_alignor some otherLayoutconstructor do not satisfy its documented constraints. - System
 - The default memory allocator provided by the operating system.
 - Alloc
Error Experimental  - The 
AllocErrorerror indicates an allocation failure that may be due to resource exhaustion or to something wrong when combining the given input arguments with this allocator. - Global
Experimental  - The global memory allocator.
 
Traits§
- Global
Alloc  - A memory allocator that can be registered as the standard library’s default
through the 
#[global_allocator]attribute. - Allocator
Experimental  - An implementation of 
Allocatorcan allocate, grow, shrink, and deallocate arbitrary blocks of data described viaLayout. 
Functions§
- alloc⚠
 - Allocates memory with the global allocator.
 - alloc_
zeroed ⚠ - Allocates zero-initialized memory with the global allocator.
 - dealloc⚠
 - Deallocates memory with the global allocator.
 - handle_
alloc_ error  - Signals a memory allocation error.
 - realloc⚠
 - Reallocates memory with the global allocator.
 - set_
alloc_ error_ hook Experimental  - Registers a custom allocation error hook, replacing any that was previously registered.
 - take_
alloc_ error_ hook Experimental  - Unregisters the current allocation error hook, returning it.
 
Type Aliases§
- Layout
Err Deprecated