# aclrtMallocHost

#### 函数功能

应用在Host上运行时，调用该接口申请的是Host内存，由系统保证内存首地址64字节对齐。应用在Device上运行时，调用该接口申请的是Device内存，且Device上的内存按普通页申请，如需首地址64字节对齐，需要用户自行处理对齐。同步接口。


#### 约束说明

- 使用aclrtMallocHost接口申请的内存，需要通过  aclrtFreeHost
接口释放内存。
- 频繁调用aclrtMallocHost接口申请内存、调用  aclrtFreeHost
接口释放内存，会损耗性能，建议用户提前做内存预先分配或二次管理，避免频繁申请/释放内存。
- 若用户使用本接口申请大块内存并自行划分、管理内存时，每段内存需同时满足以下需求：

  - 内存大小向上对齐成32整数倍+32字节（m=ALIGN_UP[len,32]+32字节）；
  - 内存起始地址需满足64字节对齐（ALIGN_UP[m,64]）。
len表示某段内存的大小，ALIGN_UP[len,k]表示向上按k字节对齐：((len-1)/k+1)*k。


#### 函数原型

aclError aclrtMallocHost(void **hostPtr, size_t size)


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| size | 输入 | 申请内存的大小，单位Byte。 size不能为0。 |
| hostPtr | 输出 | “已分配内存的指针”的指针。 |


#### 返回值说明

返回0表示成功，返回其它值表示失败。


#### 参考资源

接口调用示例，参见数据传输。
