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 memalignment 函数 (p: 374)
[编辑] 另请参阅
(C11) |
分配对齐的内存 (函数) |
(C23) |
释放先前分配的已分配大小和对齐的内存 (函数) |