D's built-in garbage-collected allocator.

struct GCAllocator;

D's built-in garbage-collected allocator.

auto buffer = GCAllocator.instance.allocate(1024 * 1024 * 4);
// deallocate upon scope's end (alternatively: leave it to collection)
scope(exit) GCAllocator.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 const pure nothrow @trusted void[] allocate(size_t bytes);

shared const pure nothrow @trusted bool expand(ref void[] b, size_t delta);

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

shared const pure nothrow @nogc @trusted Ternary resolveInternalPointer(const void* p, ref void[] result);

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

shared const pure nothrow @nogc @safe size_t goodAllocSize(size_t n);

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.

static shared const GCAllocator instance;

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

© 1999–2019 The D Language Foundation
Licensed under the Boost License 1.0.