memalignment
|
Определено в заголовочном файле
<stdlib.h>
|
||
|
size_t
memalignment
(
const
void
*
p
)
;
|
(начиная с C23) | |
Возвращает максимальное выравнивание, удовлетворяемое предоставленным адресом. Возвращаемое значение может быть больше любого значения выравнивания, поддерживаемого реализацией. Если
p
является нулевым указателем,
0
возвращается, чтобы указать, что указатель не может быть использован для доступа к объекту любого типа.
Если возвращаемое значение сравнивается больше или равно
alignof
(
T
)
, требование выравнивания для типа
T
удовлетворяется указателем.
Автономная реализация
(freestanding implementation)
должна предоставлять
memalignment
.
Содержание |
Параметры
| p | - | указатель на выравнивание запроса |
Возвращаемое значение
Значение выравнивания
p
, или
0
если
p
является нулевым указателем.
Примечания
На общих платформах, где
- нулевые указатели приводятся к целочисленному значению 0 ,
- значения указателей напрямую приводятся к числовым значениям виртуальных адресов, и
- size_t совпадает с uintptr_t ,
эта функция может быть реализована как return ( size_t ) p & - ( size_t ) p ; .
Пример
#include <stdio.h> #include <stdlib.h> int main() { alignas(128) int i = 0; printf("%zu\n%zu\n", memalignment(nullptr), memalignment(&i)); }
Возможный вывод:
0 128
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 7.24.9.1 Функция memalignment (стр: 374)
Смотрите также
|
(C11)
|
выделяет выровненную память
(функция) |
|
(C23)
|
освобождает ранее выделенную память с указанным размером и выравниванием
(функция) |