23 General utilities library [utilities]

23.10 Memory [memory]

23.10.5 Align [ptr.align]

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

Effects: Если возможно уместить size байты хранилища, выровненного по, alignment в буфер, на который указывает ptr длина space, функция обновляется, ptr чтобы представить первый возможный адрес такого хранилища, и уменьшается space на количество байтов, используемых для выравнивания. В противном случае функция ничего не делает.

Requires:

  • alignment будет степенью двойки

  • ptr представляет собой адрес непрерывного хранения не менее space байтов

Returns: Нулевой указатель, если запрошенный выровненный буфер не помещается в доступное пространство, в противном случае скорректированное значение ptr.

[ Note: Функция обновляет свои ptr и space аргументы , так что его можно назвать несколько раз , возможно , с разными alignment и size аргументы для того же буфера. ] end note