Struct std::alloc::System1.28.0[]

pub struct System;
[]

The default memory allocator provided by the operating system.

This is based on malloc on Unix platforms and HeapAlloc on Windows, plus related functions.

This type can be used in a static item with the #[global_allocator] attribute to force the global allocator to be the system’s one. (The default is jemalloc for executables, on some platforms.)

use std::alloc::System;

#[global_allocator]
static A: System = System;

fn main() {
    let a = Box::new(4); // Allocates from the system allocator.
    println!("{}", a);
}Run

It can also be used directly to allocate memory independently of the standard library’s global allocator.

Trait Implementations

impl GlobalAlloc for System
[+]

[]

Allocate memory as described by the given layout. Read more

[]

Behaves like alloc, but also ensures that the contents are set to zero before being returned. Read more

[]

Deallocate the block of memory at the given ptr pointer with the given layout. Read more

[]

Shink or grow a block of memory to the given new_size. The block is described by the given ptr pointer and layout. Read more

impl Alloc for System
[+]

[]

🔬 This is a nightly-only experimental API. (allocator_api #32838)

Returns a pointer meeting the size and alignment guarantees of layout. Read more

[]

🔬 This is a nightly-only experimental API. (allocator_api #32838)

Behaves like alloc, but also ensures that the contents are set to zero before being returned. Read more

[]

🔬 This is a nightly-only experimental API. (allocator_api #32838)

Deallocate the memory referenced by ptr. Read more

[]

🔬 This is a nightly-only experimental API. (allocator_api #32838)

Returns a pointer suitable for holding data described by a new layout with layout’s alginment and a size given by new_size. To accomplish this, this may extend or shrink the allocation referenced by ptr to fit the new layout. Read more

[]

🔬 This is a nightly-only experimental API. (allocator_api #32838)

Returns bounds on the guaranteed usable size of a successful allocation created with the specified layout. Read more

[]

🔬 This is a nightly-only experimental API. (allocator_api #32838)

Behaves like alloc, but also returns the whole size of the returned block. For some layout inputs, like arrays, this may include extra storage usable for additional data. Read more

[]

🔬 This is a nightly-only experimental API. (allocator_api #32838)

Behaves like realloc, but also returns the whole size of the returned block. For some layout inputs, like arrays, this may include extra storage usable for additional data. Read more

[]

🔬 This is a nightly-only experimental API. (allocator_api #32838)

Attempts to extend the allocation referenced by ptr to fit new_size. Read more

[]

🔬 This is a nightly-only experimental API. (allocator_api #32838)

Attempts to shrink the allocation referenced by ptr to fit new_size. Read more

[]

🔬 This is a nightly-only experimental API. (allocator_api #32838)

Allocates a block suitable for holding an instance of T. Read more

[]

🔬 This is a nightly-only experimental API. (allocator_api #32838)

Deallocates a block suitable for holding an instance of T. Read more

[]

🔬 This is a nightly-only experimental API. (allocator_api #32838)

Allocates a block suitable for holding n instances of T. Read more

[]

🔬 This is a nightly-only experimental API. (allocator_api #32838)

Reallocates a block previously suitable for holding n_old instances of T, returning a block suitable for holding n_new instances of T. Read more

[]

🔬 This is a nightly-only experimental API. (allocator_api #32838)

Deallocates a block suitable for holding n instances of T. Read more

Auto Trait Implementations

impl Send for System

impl Sync for System