AlignPtr
将传入地址按指定字节进行对齐:
void* HMPP_AlignPtr(void *ptr, int32_t align);
参数
参数名 |
描述 |
取值范围 |
输入/输出 |
---|---|---|---|
ptr |
源地址。 |
非空 |
输入 |
align |
对齐字节。 |
2的整数次幂 |
输入 |
返回值
- 成功:对齐的字节是2的整数次幂,返回地址是按align对齐的。
- 失败:对齐的字节不是2的整数次幂,返回的地址不保证是按align对齐。
错误码
无
注意
- 此函数的入参正确性需要用户自己保证,不会有错误状态码,调用函数时,注意判断返回值,否则有可能操作结果和预期不一致。
- 接口不作越界保护,上层调用代码需确保内存不越界。
示例
#define BUFFER_SIZE 100 #define ALIGN_BYTE 64 void AlignPtr_Example() { void *ptr = malloc(BUFFER_SIZE); if (ptr != NULL) { void *alignPtr = HMPP_AlignPtr(ptr, ALIGN_BYTE); if ((uint64_t)alignPtr % ALIGN_BYTE == 0) { printf("%d byte align\n", ALIGN_BYTE); } else { printf("not byte align\n"); } } }
运行结果:
64 byte align
父主题: 基础函数