鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

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