memalignment
|
定义于头文件
<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)
|
释放先前分配的带大小和对齐方式的内存
(函数) |