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 |