# tensorflow::TensorBuffer Class Reference

# tensorflow::
TensorBuffer

**This is an abstract class.**   

`
#include <tensor.h>
`

## Summary


Interface to access the raw ref-counted data buffer.

### Inheritance

Inherits from: RefCounted

| ### Constructors and Destructors ||
|---|---|
| ` https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1ade0441d867aabc7d8c4f4a553d1e5fd3 (void *data_ptr) ` ||
| ` https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a18b48c272459852177bbc653354b5b9a () ` ||

| ### Public functions ||
|---|---|
| ` https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1ab705a2c85f480e615dad7e7456fc121a (AllocationDescription *proto) const =0 ` | ` virtual void ` Fills metadata about the allocation into the proto. |
| ` https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a4a9ed5ee51dc0ab5c1326fba4fb41e41 (size_t *out_bytes) const ` | ` virtual bool ` |
| ` https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a3c7bd551682ef698b66f432c32a3419f () const ` | ` virtual bool ` Whether this [TensorBuffer](https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer) owns the underlying memory. |
| ` https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a13f72af307351613523799b8b3944ed5 () const ` | ` T * ` Helper method to reinterpret the buffer as an array of ` T ` . |
| ` https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a7e8cdbb48073e1a8890427acad00a30e () const ` | ` void * ` [data()](https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a7e8cdbb48073e1a8890427acad00a30e) points to a memory region of [size()](https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a36b022bd5ed41ce31242d6f3bbe6757b) bytes. |
| ` https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a0b406028a1e487cca2eacca453381fc3 ()=0 ` | ` virtual https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer * ` If this [TensorBuffer](https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer) is sub-buffer of another [TensorBuffer](https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer) , returns that [TensorBuffer](https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer) . |
| ` https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a36b022bd5ed41ce31242d6f3bbe6757b () const =0 ` | ` virtual size_t ` Size (in bytes) of the buffer. |

## Public functions

### FillAllocationDescription

```
virtual void FillAllocationDescription(
  AllocationDescription *proto
) const =0
```

Fills metadata about the allocation into the proto.

### GetAllocatedBytes

```
virtual bool GetAllocatedBytes(
  size_t *out_bytes
) const 
```

### OwnsMemory

```
virtual bool OwnsMemory() const 
```

Whether this
[TensorBuffer](https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer)
owns the underlying memory.

### TensorBuffer

```
 TensorBuffer(
  void *data_ptr
)
```

### base

```
T * base() const 
```

Helper method to reinterpret the buffer as an array of
`
T
`
.

### data

```
void * data() const 
```

[data()](https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a7e8cdbb48073e1a8890427acad00a30e)
points to a memory region of
[size()](https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a36b022bd5ed41ce31242d6f3bbe6757b)
bytes.


NOTE(mrry): The
`
https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a7e8cdbb48073e1a8890427acad00a30e
`
method is not virtual for performance reasons. It can be called multiple times when the contents of a
`
https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor#classtensorflow_1_1_tensor
`
are accessed, and so making it non-virtual allows the body to be inlined.

### root_buffer

```
virtual TensorBuffer * root_buffer()=0
```

If this
[TensorBuffer](https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer)
is sub-buffer of another
[TensorBuffer](https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer)
, returns that
[TensorBuffer](https://www.tensorflow.org/versions/r2.5/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer)
.


Otherwise, returns this.

### size

```
virtual size_t size() const =0
```

Size (in bytes) of the buffer.

### \~TensorBuffer

```
 ~TensorBuffer() override
```