Initializes the memory referenced by this pointer with the given value, binds the memory to the value’s type, and returns a typed pointer to the initialized memory.
SDK
- Xcode 9.3+
Framework
- Swift Standard Library
Declaration
@discardableResult func initializeMemory<T>(as type: T.Type, repeating repeatedValue: T, count: Int) -> Unsafe Mutable Pointer<T>
Parameters
type
The type to bind this memory to.
repeatedValue
The instance to copy into memory.
count
The number of copies of
value
to copy into memory.count
must not be negative.
Return Value
A typed pointer to the memory referenced by this raw pointer.
Discussion
The memory referenced by this pointer must be uninitialized or initialized to a trivial type, and must be properly aligned for accessing T
.
The following example allocates enough raw memory to hold four instances of Int8
, and then uses the initialize
method to initialize the allocated memory.
let count = 4
let bytesPointer = UnsafeMutableRawPointer.allocate(
byteCount: count * MemoryLayout<Int8>.stride,
alignment: MemoryLayout<Int8>.alignment)
let int8Pointer = myBytes.initializeMemory(
as: Int8.self, repeating: 0, count: count)
// After using 'int8Pointer':
int8Pointer.deallocate()
After calling this method on a raw pointer p
, the region starting at self
and continuing up to p + count * Memory
is bound to type T
and initialized. If T
is a nontrivial type, you must eventually deinitialize or move from the values in this region to avoid leaks.