memalignment
来自cppreference.com
在标头 <stdlib.h> 定义 | ||
size_t memalignment( const void *p ); | (C23 起) | |
返回提供的地址所满足的最大对齐。返回值能大于任何实现所支持的对齐值。如果 p
为空指针值,则返回 0 指示该指针不能用于访问任何类型的对象。
如果返回值大于或等于 alignof(T),则类型 T
的对齐要求为该指针所满足。
独立实现需要提供 memalignment
。
参数
p | - | 要查询对齐的指针 |
返回值
p
的对齐值,或如果 p
为空指针值则为 0。
注解
在
的常见平台上,此函数能被实现为 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 The memalignment function (第 374 页)
参阅
(C11) | 分配对齐的内存 (函数) |
(C23) | 归还之前分配的指定大小和对齐的内存 (函数) |