---
title: aclrtReserveMemAddressNoUCMemory
description: "须知：由用户指定起始地址是试验特性，后续版本可能存在变更，不支持应用于商用产品中"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/runtimeapi/aclcppdevg_03_2134.html
sourcePath: /source/zh/canncommercial/900/API/runtimeapi/aclcppdevg_03_2134.html
indexId: c081e6816ae9f31886db4b7c13f52ba943602d172f437ec6f8451bb6e2a8c21168
---
# aclrtReserveMemAddressNoUCMemory

须知：由用户指定起始地址是试验特性，后续版本可能存在变更，不支持应用于商用产品中

#### 产品支持情况

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


#### 功能说明

预留虚拟内存。

本接口与aclrtReserveMemAddress接口的使用方法相同，区别在于：根据环境变量AUTO_USE_UC_MEMORY决定是否允许数据搬移不经过L2 Cache的算子，本接口预留的虚拟内存不能用作此类算子的输入或输出内存，否则可能会导致算子精度问题或异常。AUTO_USE_UC_MEMORY环境变量的详细说明请参见《环境变量参考(https://www.hiascend.com/document/detail/zh/canncommercial/900/maintenref/envvar/envref_07_0001.html)》。

另外，本接口中的虚拟内存起始地址不支持由系统自动分配，只能由用户指定，且地址建议在40T-224T范围内。


#### 函数原型

```
aclError aclrtReserveMemAddressNoUCMemory(void **virPtr, size_t size, size_t alignment, void *expectPtr, uint64_t flags)
```


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| virPtr | 输出 | “已分配的虚拟内存地址的指针”的指针。 |
| size | 输入 | 虚拟内存大小，单位Byte。 size不能为0，只能为1G的整数倍，最小为1G。 |
| alignment | 输入 | 虚拟地址对齐值，预留，当前只能设置为0。 |
| expectPtr | 输入 | 指定期望返回的虚拟内存起始地址。 由用户指定起始地址，地址建议在40T\-224T范围内。用户需确保指定的地址未被占用，否则预留虚拟内存失败，接口返回错误。 |
| flags | 输入 | 大页/普通页标志，预留参数，建议固定配置为0。 |


#### 返回值说明

返回0表示成功，返回其他值表示失败，请参见aclError。
