全局分配符
分配器是 Rust 中的程序在运行时从系统获取内存的方式。以前,Rust 不允许改变获取内存的方式,这阻止了一些用例。
在某些平台上,这意味着在其他平台上使用 jemalloc,系统分配器,但用户无法控制此关键组件。
在1.28中,#[global_allocator]
属性现在是稳定的,它允许 Rust 程序将它们的分配器设置为系统分配器,并通过实现 GlobalAlloc
特性来定义新的分配器。
某些平台上 Rust 程序的默认分配器是 jemalloc。标准库现在提供了系统分配器的句柄,可以在需要时通过声明静态并使用 #[global_allocator]
属性标记它来切换到系统分配器。
use std::alloc::System;
#[global_allocator]
static GLOBAL: System = System;
fn main() {
let mut v = Vec::new();
// This will allocate memory using the system allocator.
v.push(1);
}
但是,有时您希望为给定的应用程序域定义自定义分配器。通过实现 GlobalAlloc
特性,这也相对容易。
您可以在 the documentation。
当前内容版权归 rust-lang-cn 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 rust-lang-cn .