---
title: AlignPtr
description: "将传入地址按指定字节进行对齐："
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2300/accel/kunpengaccel_hmpp_06_0031.html
sourcePath: /source/zh/kunpengboostkithistory/2300/accel/kunpengaccel_hmpp_06_0031.html
indexId: edbd3bf70d53fe7949edaade18452017f6e97f0740cd0898e6910a1380d6464075
---
# 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
```
