# hi_mpi_dvpp_malloc

#### 函数功能

申请Device上的内存，申请的内存满足媒体数据处理的要求（例如，内存首地址128字节对齐）。


#### 约束说明

- 调用该接口申请内存后，这部分内存的生命周期由用户自行管理，如果不使用，必须调用  hi_mpi_dvpp_free
接口及时释放内存。
- 通过该接口申请的内存仅支持在单个进程内使用，不能在多个进程之间共享。
- 调用hi_mpi_dvpp_malloc接口申请内存时，会对用户输入的size按向上对齐成32整数倍后，再多加32字节。
- 媒体数据处理的输出作为模型推理的输入时，若用户使用本接口申请大块内存并自行划分、管理内存时，每段内存需同时满足以下要求：

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


#### 函数原型

hi_s32 hi_mpi_dvpp_malloc(hi_u32 dev_id, hi_void **dev_ptr, hi_u64 size)


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| dev\_id | 输入 | Device ID，预留参数，该参数配置无效。 |
| dev\_ptr | 输出 | “Device上已分配内存的指针”的指针。 |
| size | 输入 | 申请内存的大小，单位Byte。 |


#### 返回值说明

- 0：成功
- 非0：失败


#### 参考资源

接口调用流程及示例，参见媒体数据处理V2。
