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