# 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/r1.15/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1ade0441d867aabc7d8c4f4a553d1e5fd3(void *data_ptr)` ||
| `https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a18b48c272459852177bbc653354b5b9a()` ||

| ### Public functions ||
|---|---|
| `https://www.tensorflow.org/versions/r1.15/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/r1.15/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a3c7bd551682ef698b66f432c32a3419f() const ` | `virtual bool` Whether this [TensorBuffer](https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer) owns the underlying memory. |
| `https://www.tensorflow.org/versions/r1.15/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/r1.15/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a7e8cdbb48073e1a8890427acad00a30e() const ` | `void *` [data()](https://www.tensorflow.org/versions/r1.15/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/r1.15/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a36b022bd5ed41ce31242d6f3bbe6757b) bytes. |
| `https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a0b406028a1e487cca2eacca453381fc3()=0` | `virtual https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer *` If this [TensorBuffer](https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer) is sub-buffer of another [TensorBuffer](https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer), returns that [TensorBuffer](https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer). |
| `https://www.tensorflow.org/versions/r1.15/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.

### OwnsMemory

```
virtual bool OwnsMemory() const 
```
Whether this [TensorBuffer](https://www.tensorflow.org/versions/r1.15/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/r1.15/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/r1.15/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer_1a36b022bd5ed41ce31242d6f3bbe6757b) bytes.

NOTE(mrry): The `https://www.tensorflow.org/versions/r1.15/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/r1.15/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/r1.15/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer) is sub-buffer of another [TensorBuffer](https://www.tensorflow.org/versions/r1.15/api_docs/cc/class/tensorflow/tensor-buffer#classtensorflow_1_1_tensor_buffer), returns that [TensorBuffer](https://www.tensorflow.org/versions/r1.15/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
```