W3cubDocs

/D

std.experimental.allocator.mallocator

struct Mallocator

The C heap allocator.

Examples:
auto buffer = Mallocator.instance.allocate(1024 * 1024 * 4);
scope(exit) Mallocator.instance.deallocate(buffer);
//...
enum uint alignment

The alignment is a static constant equal to platformAlignment, which ensures proper alignment for any D data type.

shared nothrow @nogc @trusted void[] allocate(size_t bytes)
shared nothrow @nogc @system bool deallocate(void[] b)
shared nothrow @nogc @system bool reallocate(ref void[] b, size_t s)

Standard allocator methods per the semantics defined above. The deallocate and reallocate methods are @system because they may move memory around, leaving dangling pointers in user code. Somewhat paradoxically, malloc is @safe but that's only useful to safe programs that can afford to leak memory allocated.

static shared Mallocator instance

Returns the global instance of this allocator type. The C heap allocator is thread-safe, therefore all of its methods and it itself are shared.

struct AlignedMallocator

Aligned allocator using OS-specific primitives, under a uniform API.

Examples:
auto buffer = AlignedMallocator.instance.alignedAllocate(1024 * 1024 * 4,
    128);
scope(exit) AlignedMallocator.instance.deallocate(buffer);
//...
enum uint alignment

The default alignment is platformAlignment.

shared nothrow @nogc @trusted void[] allocate(size_t bytes)

Forwards to alignedAllocate(bytes, platformAlignment).

shared nothrow @nogc @trusted void[] alignedAllocate(size_t bytes, uint a)

Uses posix_memalign on Posix and _aligned_malloc on Windows.

shared nothrow @nogc @system bool deallocate(void[] b)

Calls free(b.ptr) on Posix and _aligned_free(b.ptr) on Windows.

shared nothrow @nogc @system bool reallocate(ref void[] b, size_t newSize)

On Posix, forwards to realloc. On Windows, forwards to alignedReallocate(b, newSize, platformAlignment).

static shared AlignedMallocator instance

Returns the global instance of this allocator type. The C heap allocator is thread-safe, therefore all of its methods and instance itself are shared.

© 1999–2017 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/std_experimental_allocator_mallocator.html