---
title: 函数：malloc_cached
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/runtimeapi/aclpythondevg_01_0111.html
sourcePath: /source/zh/canncommercial/900/API/runtimeapi/aclpythondevg_01_0111.html
indexId: e25c463bf7d8080bf37419e145de6b133fbd29b0fb606fd7580bed251f7a558a71
---
# 函数：malloc_cached

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |


#### 功能说明

申请Device上的内存，该接口在任何场景下申请的内存都是支持cache缓存。在Device上申请size大小的线性内存，通过dev_ptr返回已分配内存的指针地址。

使用acl.rt.malloc_cached接口申请的内存与使用acl.rt.malloc接口申请的内存是等价的，都支持cache缓存，不需要用户处理cpu与npu之间的cache一致性。

调用媒体数据处理的接口前，若需要申请Device上的内存存放输入或输出数据，需调用acl.media.dvpp_malloc申请内存。


#### 函数原型

- C函数原型
  1 aclError aclrtMallocCached(void **devPtr, size_t size, aclrtMemMallocPolicy policy)

- python函数
  1 dev_ptr, ret = acl.rt.malloc_cached(size, policy)


#### 参数说明

| 参数名 | 说明 |
| --- | --- |
| size | int，申请内存的大小，单位Byte。size不能为0。 |
| policy | int，内存分配规则。 若配置的内存分配规则超出aclrtMemMallocPolicy取值范围，size≥2M时，按大页申请内存，否则按普通页申请内存 |


#### 返回值说明

| 返回值 | 说明 |
| --- | --- |
| dev\_ptr | int，指向Device上已分配内存的指针地址。 |
| ret | int，错误码，返回0表示成功，返回其它值表示失败。 |


#### 约束说明

其它约束与acl.rt.malloc接口相同。
