Uses posix_memalign on Posix and __aligned_malloc on Windows.
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).
Forwards to alignedAllocate(bytes, platformAlignment).
Calls free(b.ptr) on Posix and __aligned_free(b.ptr) on Windows.
Forwards to alignedReallocate(b, newSize, platformAlignment). Should be used with blocks obtained with allocate otherwise the custom alignment passed with alignedAllocate can be lost.
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.
The default alignment is platformAlignment.
Aligned allocator using OS-specific primitives, under a uniform API.