Effects: If it is possible to fit size bytes
of storage aligned by alignment into the buffer pointed to by
ptr with length space, the function updates
ptr to represent the first possible address of such storage
and decreases space by the number of bytes used for alignment.
The function updates its ptr
and space arguments so that it can be called repeatedly
with possibly different alignment and size
arguments for the same buffer.