std.experimental.allocator.mallocator
The C heap allocator.
- 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 pure nothrow @nogc @trusted void[] allocate(size_t bytes);
shared pure nothrow @nogc @system bool deallocate(void[] b);
shared pure nothrow @nogc @system bool reallocate(ref void[] b, size_t s); -
Standard allocator methods per the semantics defined above. The
deallocate
andreallocate
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 areshared
.
- 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);
shared nothrow @nogc @system bool alignedReallocate(ref void[] b, size_t s, uint a); -
Forwards to
alignedReallocate(b, newSize, platformAlignment)
. Should be used with blocks obtained withallocate
otherwise the custom alignment passed withalignedAllocate
can be lost. - 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 areshared
.
© 1999–2021 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/std_experimental_allocator_mallocator.html