全局分配符
分配器是 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。