memalignment
来自 cppreference.cn
在头文件 <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 memalignment 函数 (p: 374)
[编辑] 另请参阅
(C11) |
分配对齐内存 (函数) |
(C23) |
释放之前分配的指定大小且对齐的内存 (函数) |