20 General utilities library [utilities]

20.7 Memory [memory]

20.7.5 Align [ptr.align]

void* align(std::size_t alignment, std::size_t size, void*& ptr, std::size_t& space);

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 point to the first possible address of such storage and decreases space by the number of bytes used for alignment. Otherwise, the function does nothing.

Requires:

  • alignment shall be a fundamental alignment value or an extended alignment value supported by the implementation in this context

  • ptr shall point to contiguous storage of at least space bytes

Returns: A null pointer if the requested aligned buffer would not fit into the available space, otherwise the adjusted value of ptr.

Note: 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.  — end note ]