---
title: ManagedBufferPointer
framework: swift
role: symbol
role_heading: Structure
path: swift/managedbufferpointer
---

# ManagedBufferPointer

Contains a buffer object, and provides access to an instance of Header and contiguous storage for an arbitrary number of Element instances stored in that buffer.

## Declaration

```swift
@frozen struct ManagedBufferPointer<Header, Element> where Element : ~Copyable
```

## Overview

Overview For most purposes, the ManagedBuffer class can be used on its own. However, in cases where objects of various different classes must serve as storage, you need to also use ManagedBufferPointer. A valid buffer class is non-@objc, with no declared stored properties.  Its deinit must destroy its stored Header and any constructed Elements. Example Buffer Class  class MyBuffer<Element> { // non-@objc    typealias Manager = ManagedBufferPointer<(Int, String), Element>    deinit {      Manager(unsafeBufferObject: self).withUnsafeMutablePointers {        (pointerToHeader, pointerToElements) -> Void in        pointerToElements.deinitialize(count: self.count)        pointerToHeader.deinitialize(count: 1)      }    }

// All properties are *computed* based on members of the Header    var count: Int {      return Manager(unsafeBufferObject: self).header.0    }    var name: String {      return Manager(unsafeBufferObject: self).header.1    }  }

## Topics

### Creating a Buffer

- [init(bufferClass:minimumCapacity:makingHeaderWith:)](swift/managedbufferpointer/init(bufferclass:minimumcapacity:makingheaderwith:).md)
- [init(unsafeBufferObject:)](swift/managedbufferpointer/init(unsafebufferobject:).md)

### Inspecting a Buffer

- [capacity](swift/managedbufferpointer/capacity.md)
- [header](swift/managedbufferpointer/header.md)
- [buffer](swift/managedbufferpointer/buffer.md)
- [isUniqueReference()](swift/managedbufferpointer/isuniquereference().md)

### Accessing Buffer Contents

- [withUnsafeMutablePointerToElements(_:)](swift/managedbufferpointer/withunsafemutablepointertoelements(_:).md)
- [withUnsafeMutablePointerToHeader(_:)](swift/managedbufferpointer/withunsafemutablepointertoheader(_:).md)
- [withUnsafeMutablePointers(_:)](swift/managedbufferpointer/withunsafemutablepointers(_:).md)

### Comparing Buffers

- [!=(_:_:)](swift/managedbufferpointer/!=(_:_:).md)

### Default Implementations

- [Equatable Implementations](swift/managedbufferpointer/equatable-implementations.md)

## Relationships

### Conforms To

- [Equatable](swift/equatable.md)

## See Also

### Buffer Implementation

- [ManagedBuffer](swift/managedbuffer.md)
