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

#### 产品支持情况

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


#### 功能说明

预留虚拟内存。

本接口需与以下其它接口配合使用，以便申请地址连续的虚拟内存、最大化利用物理内存的目的：1. 申请虚拟内存（  acl.rt.reserve_mem_address
接口）。
2. 申请物理内存（  acl.rt.malloc_physical
接口）。
3. 将虚拟内存映射到物理内存（  acl.rt.map_mem
接口）。
4. 执行任务（调用具体的任务接口）。
5. 取消虚拟内存与物理内存的映射（  acl.rt.unmap_mem
接口）。
6. 释放物理内存（  acl.rt.free_physical
接口）。
7. 释放虚拟内存（  acl.rt.release_mem_address
接口）。


#### 函数原型

- C函数原型
  1 aclError aclrtReserveMemAddress(void **virPtr, size_t size, size_t alignment, void *expectPtr, uint64_t flags)

- python函数
  1 vir_ptr, ret = acl.rt.reserve_mem_address(size, alignment, expect_ptr, flags)


#### 参数说明

| 参数名 | 说明 |
| --- | --- |
| size | int，虚拟地址空间大小，单位Byte。size不能为0。 |
| alignment | int，虚拟地址对齐值，预留，当前只能设置为0。 |
| expectPtr | int，指定期望返回的虚拟地址空间起始地址，预留，当前只能传0。 |
| flags | int，大页/普通页标志，预留参数，建议固定配置为0。 |


#### 返回值说明

| 返回值 | 说明 |
| --- | --- |
| virPtr | int，指向已分配的虚拟地址空间的地址。 |
| ret | int，错误码，返回0表示成功，返回其它值表示失败。 |


#### 约束说明

- Ascend RC形态不支持调用本接口。
当前以下型号支持Ascend RC形态：

  - Atlas 200I/500 A2 推理产品
- 使用本接口预留的虚拟内存，单进程场景下只支持调用  memcpy_async
接口实现两个Device之间的数据拷贝。
