---
title: aclrtAllocatorRegister
description: "调用该接口注册用户提供的Allocator以及Allocator对应的回调函数，用于使用用户提供的Allocator。"
url: https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/latest/Application%20Development%20Guide/aadgc/aclcppdevg_03_0114.html
sourcePath: /source/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Application Development Guide/aadgc/aclcppdevg_03_0114.html
indexId: 562f92331f471e5960fceb2a87b83d76ab1ca210e0316b42ca7f7a80d043cdeb105
---
# aclrtAllocatorRegister

#### 函数功能

调用该接口注册用户提供的Allocator以及Allocator对应的回调函数，用于使用用户提供的Allocator。

Atlas 200/500 A2推理产品，不支持该接口。


#### 约束说明

- 当前仅支持在执行单算子场景下使用本接口，且需在调用单算子执行接口（例如：  aclopExecuteV2
、  aclopCompileAndExecuteV2
等）之前调用本接口。
- 调用本接口前，需要先调用  aclrtAllocatorCreateDesc
创建Allocator描述符，再分别调用  aclrtAllocatorSetObjToDesc
、  aclrtAllocatorSetAllocFuncToDesc
、  aclrtAllocatorSetGetAddrFromBlockFuncToDesc
、  aclrtAllocatorSetFreeFuncToDesc
设置Allocator对象及回调函数。调用本接口完成注册后，可调用  aclrtAllocatorDestroyDesc
接口销毁Allocator描述符。
- 对于同一条流，多次调用本接口，以最后一次注册为准。
- 对于不同流，如果用户使用同一个Allocator，不可以多条流并发执行，在执行下一条Stream前，需要对上一Stream做流同步。
- 将Allocator中的内存释放给操作系统前，需要先调用  aclrtSynchronizeStream
接口执行流同步，确保Stream中的任务已执行完成。


#### 函数原型

aclError aclrtAllocatorRegister(aclrtStream stream, aclrtAllocatorDesc allocatorDesc)


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| stream | 输入 | 该Allocator需要注册的Stream。 |
| allocatorDesc | 输入 | Allocator描述符指针。 |


#### 返回值说明

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