View source code
Display the source code in std/experimental/allocator/mallocator.d from which this page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone.

Struct std.experimental.allocator.mallocator.AlignedMallocator

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

struct AlignedMallocator ;

Fields

NameTypeDescription
instance shared(AlignedMallocator)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.

Methods

NameDescription
alignedAllocate Uses posix_memalign on Posix and __aligned_malloc on Windows.
alignedReallocate On Posix there is no realloc for aligned memory, so alignedReallocate emulates the needed behavior by using alignedAllocate to get a new block. The existing block is copied to the new block and then freed. On Windows, calls _aligned_realloc(b.ptr, newSize, a).
allocate Forwards to alignedAllocate(bytes, platformAlignment).
deallocate Calls free(b.ptr) on Posix and __aligned_free(b.ptr) on Windows.
reallocate Forwards to alignedReallocate(b, newSize, platformAlignment). Should be used with blocks obtained with allocate otherwise the custom alignment passed with alignedAllocate can be lost.

Example

auto buffer = AlignedMallocator.instance.alignedAllocate(1024 * 1024 * 4,
    128);
scope(exit) AlignedMallocator.instance.deallocate(buffer);
//...

Authors

License