memalignment
Defined in header <stdlib.h>
|
||
size_t memalignment(
const
void
*p )
;
|
(since C23) | |
Returns the maximum alignment satisfied by the provided address. The return value can be greater than any alignment value supported by the implementation. If p
is a null pointer value, 0
If the return value compares is greater than or equal to alignof(T), the alignment requirement for the type T
A freestanding implementation needs to provide memalignment
.
Parameters
p | - | pointer to query alignment |
Return value
The alignment value of p
, or 0 if p
is a null pointer value.
Notes
On common platforms where
- null pointers are cast to integer 0,
- pointer values are directly cast to the numeric values of virtual addresses, and
- size_t is same as uintptr_t,
this function can be implemented as return ( size_t )p & - ( size_t )p;
Example
#include <stdio.h> #include <stdlib.h> int main() { alignas(128) int i = 0; printf("%zu\n%zu\n", memalignment(nullptr), memalignment(&i)); }
Possible output:
0 128
References
- C23 standard (ISO/IEC 9899:2024):
- 7.24.9.1 The memalignment function (p: 374)
See also
(C11)
|
allocates aligned memory (function) |
(C23)
|
deallocates previously allocated sized and aligned memory (function) |