Allocate size bytes aligned by alignment.
number of bytes to allocate.
the minimal alignment of the allocated memory.
pointer to the allocated memory or NULL if out of memory. The returned pointer is aligned by alignment, i.e. (uintptr_t)p % alignment == 0.
Returns a unique pointer if called with size 0.