---
title: 构造及析构函数
description: "构造一个TensorData。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/maintenref/basicdataapi/atlasopapi_07_00183.html
sourcePath: /source/zh/canncommercial/900/maintenref/basicdataapi/atlasopapi_07_00183.html
indexId: cc022613ca35207bebfaf9a21502840b5c7bccc958236a193252de8fcc7f179b78
---
# 构造及析构函数

#### 函数功能

构造一个TensorData。

构造方式1：指定了tensor数据的地址以及用于管理tensor数据的函数manager。

构造方式2：指定了tensor数据的地址、用于管理tensor数据的函数manager、tensor数据所占内存大小、tensor数据所在的位置（host、device）。

构造方式3：移动构造形式。

注意：若manager为nullptr，则认为addr就是tensor的数据地址。否则，tensor数据的地址由manager给出。


#### 函数原型

- 构造函数
  1 2 3 4 explicit TensorData(TensorAddress addr = nullptr, const TensorAddrManager manager = nullptr) explicit TensorData(TensorAddress addr, const TensorAddrManager manager, size_t size, TensorPlacement placement) TensorData(TensorData &&other) noexcept TensorData(const TensorData &) = delete

- 析构函数
  1 ~TensorData


#### 参数说明

| 参数 | 输入/输出 | 说明 |  |  |
| --- | --- | --- | --- | --- |
| addr | 输入 | tensor数据的地址。 1 using TensorAddress = void \*; | 1 | using TensorAddress = void \*; |
| 1 | using TensorAddress = void \*; |  |  |  |
| manager | 输入 | tensor data的管理函数，若manager为空，则认为addr就是tensor的数据地址，且此数据不需要被释放。 1 2 3 4 5 6 7 using TensorAddrManager = ge::graphStatus (\*)(TensorAddress addr, TensorOperateType operate\_type, void \*\*out); enum TensorOperateType { kGetTensorAddress, ///< 获取Tensor的地址 kFreeTensor, ///< 释放Tensor kPlusShareCount, ///< 共享Tensor kTensorOperateType }; | 1 2 3 4 5 6 7 | using TensorAddrManager = ge::graphStatus (\*)(TensorAddress addr, TensorOperateType operate\_type, void \*\*out); enum TensorOperateType { kGetTensorAddress, ///< 获取Tensor的地址 kFreeTensor, ///< 释放Tensor kPlusShareCount, ///< 共享Tensor kTensorOperateType }; |
| 1 2 3 4 5 6 7 | using TensorAddrManager = ge::graphStatus (\*)(TensorAddress addr, TensorOperateType operate\_type, void \*\*out); enum TensorOperateType { kGetTensorAddress, ///< 获取Tensor的地址 kFreeTensor, ///< 释放Tensor kPlusShareCount, ///< 共享Tensor kTensorOperateType }; |  |  |  |
| size | 输入 | tensor数据所占的内存大小。 |  |  |
| placement | 输入 | tensor数据所在的设备位置。 |  |  |


#### 返回值说明

初始化后的TensorData对象。


#### 约束说明

无。


#### 调用示例

```
auto addr = reinterpret_cast<void *>(0x10);
TensorData td(addr, HostAddrManager, 100U, kOnHost);
```
