<!--
{
  "availability" : [
    "DriverKit: -",
    "iOS: -",
    "iPadOS: -",
    "macOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "DriverKit",
  "identifier" : "/documentation/DriverKit/libkern/safe_allocation",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "DriverKit"
    ],
    "preciseIdentifier" : "c:@N@libkern@ST>3#T#T#T@safe_allocation"
  },
  "title" : "safe_allocation"
}
-->

# safe_allocation

```
template <typename T, typename Allocator, typename TrappingPolicy> struct safe_allocation;
```

## Topics

### Instance Properties

[`type-parameter-0-0 * data_;`](/documentation/DriverKit/libkern/safe_allocation/data_)

[`uint32_t size_;`](/documentation/DriverKit/libkern/safe_allocation/size_)

### Instance Methods

[`iterator begin() noexcept;`](/documentation/DriverKit/libkern/safe_allocation/begin-3dcll)

[`const_iterator begin() const noexcept;`](/documentation/DriverKit/libkern/safe_allocation/begin-tww)

[`const type-parameter-0-0 * data() const noexcept;`](/documentation/DriverKit/libkern/safe_allocation/data-22ie4)

[`type-parameter-0-0 * data() noexcept;`](/documentation/DriverKit/libkern/safe_allocation/data-ndtq)

[`iterator end() noexcept;`](/documentation/DriverKit/libkern/safe_allocation/end-36jim)

[`const_iterator end() const noexcept;`](/documentation/DriverKit/libkern/safe_allocation/end-3p0c5)

[`safe_allocation<T, Allocator, TrappingPolicy> & operator=(sa_detail::nullptr_t );`](/documentation/DriverKit/libkern/safe_allocation/operator=-1w9z8)

[`safe_allocation<T, Allocator, TrappingPolicy> & operator=(safe_allocation<T, Allocator, TrappingPolicy> && other);`](/documentation/DriverKit/libkern/safe_allocation/operator=-5z2we)

[`safe_allocation<T, Allocator, TrappingPolicy> & operator=(const safe_allocation<T, Allocator, TrappingPolicy> & );`](/documentation/DriverKit/libkern/safe_allocation/operator=-o5nf)

[`const type-parameter-0-0 & operator[](ptrdiff_t n) const;`](/documentation/DriverKit/libkern/safe_allocation/operator__-3hxos)

[`type-parameter-0-0 & operator[](ptrdiff_t n);`](/documentation/DriverKit/libkern/safe_allocation/operator__-3r1sy)

[`explicit operator _Bool() const;`](/documentation/DriverKit/libkern/safe_allocation/operator_bool)

[`explicit safe_allocation<T, Allocator, TrappingPolicy>(size_t n, allocate_memory_zero_t );`](/documentation/DriverKit/libkern/safe_allocation/safe_allocation_T,_Allocator,_TrappingPolicy_-2tktj)

[`explicit safe_allocation<T, Allocator, TrappingPolicy>() noexcept;`](/documentation/DriverKit/libkern/safe_allocation/safe_allocation_T,_Allocator,_TrappingPolicy_-3gmjc)

[`safe_allocation<T, Allocator, TrappingPolicy>(sa_detail::nullptr_t ) noexcept;`](/documentation/DriverKit/libkern/safe_allocation/safe_allocation_T,_Allocator,_TrappingPolicy_-4sled)

[`explicit safe_allocation<T, Allocator, TrappingPolicy>(T * *data, size_t n, adopt_memory_t );`](/documentation/DriverKit/libkern/safe_allocation/safe_allocation_T,_Allocator,_TrappingPolicy_-6fh36)

[`safe_allocation<T, Allocator, TrappingPolicy>(const safe_allocation<T, Allocator, TrappingPolicy> & );`](/documentation/DriverKit/libkern/safe_allocation/safe_allocation_T,_Allocator,_TrappingPolicy_-6t8d2)

[`safe_allocation<T, Allocator, TrappingPolicy>(safe_allocation<T, Allocator, TrappingPolicy> && other) noexcept;`](/documentation/DriverKit/libkern/safe_allocation/safe_allocation_T,_Allocator,_TrappingPolicy_-822ca)

[`explicit safe_allocation<T, Allocator, TrappingPolicy>(size_t n, allocate_memory_t );`](/documentation/DriverKit/libkern/safe_allocation/safe_allocation_T,_Allocator,_TrappingPolicy_-8q8eq)

[`size_t size() const;`](/documentation/DriverKit/libkern/safe_allocation/size)

[`~safe_allocation<T, Allocator, TrappingPolicy>();`](/documentation/DriverKit/libkern/safe_allocation/~safe_allocation_T,_Allocator,_TrappingPolicy_)

### Type Aliases

[`typedef bounded_ptr<const type-parameter-0-0, TrappingPolicy> const_iterator;`](/documentation/DriverKit/libkern/safe_allocation/const_iterator)

[`typedef bounded_ptr<T, TrappingPolicy> iterator;`](/documentation/DriverKit/libkern/safe_allocation/iterator)

### Type Methods

[`static void destroy_dealloc_(T * *ptr, size_t size);`](/documentation/DriverKit/libkern/safe_allocation/destroy_dealloc_)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)