Module std::alloc 1.28.0[−][src]
Expand description
内存分配 API。
在给定程序中,标准库具有一个 global
内存分配器,例如 Box<T>
和 Vec<T>
就会使用它。
当前未指定默认的分配器。
但是,默认情况下,保证像 cdylib 和 staticlib 这样的库都使用 System
。
#[global_allocator]
属性
此属性允许配置分配器的选择。 您可以使用它来实现一个完全自定义的 alloc 分配器,以将所有默认分配请求路由到自定义 object。
use std::alloc::{GlobalAlloc, System, Layout}; struct MyAllocator; unsafe impl GlobalAlloc for MyAllocator { unsafe fn alloc(&self, layout: Layout) -> *mut u8 { System.alloc(layout) } unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) { System.dealloc(ptr, layout) } } #[global_allocator] static GLOBAL: MyAllocator = MyAllocator; fn main() { // 该 `Vec` 将通过上面的 `GLOBAL` 分配内存 let mut v = Vec::new(); v.push(1); }Run
该属性用于其类型实现 GlobalAlloc
trait 的 static
项。
可以由外部库提供此类型:
ⓘ
extern crate jemallocator; use jemallocator::Jemalloc; #[global_allocator] static GLOBAL: Jemalloc = Jemalloc; fn main() {}Run
#[global_allocator]
只能在 crate 或其递归依赖性中使用一次。
Structs
AllocError | Experimental
|
Global | Experimental 内存分配器。 |
Layout | 一块内存的布局。 |
LayoutError | 给 |
System | 操作系统提供的默认内存分配器。 |
Traits
Allocator | Experimental
|
GlobalAlloc | 可以通过 |
Functions
set_alloc_error_hook | Experimental 注册一个自定义分配错误 hook,替换以前注册的任何错误。 |
take_alloc_error_hook | Experimental 注销当前分配错误 hook,将其返回。 |
alloc⚠ | 用分配器分配内存。 |
alloc_zeroed⚠ | 用分配器分配零初始化的内存。 |
dealloc⚠ | 使用分配器释放内存。 |
handle_alloc_error | 由于内存分配错误或失败而终止。 |
realloc⚠ | 使用分配器重新分配内存。 |
Type Definitions
LayoutErr | Deprecated |