storeBytes(of:toByteOffset:as:)
Stores the given value’s bytes into raw memory at the specified offset.
func storeBytes<T>(of value: T, toByteOffset offset: Int = 0, as type: T.Type) Parameters
The type T to be stored must be a trivial type. The memory must also be uninitialized, initialized to T, or initialized to another trivial type that is layout compatible with T.
After calling storeBytes(of:toByteOffset:as:), the memory is initialized to the raw bytes of value. If the memory is bound to a type U that is layout compatible with T, then it contains a value of type U. Calling storeBytes(of:toByteOffset:as:) does not change the bound type of the memory.
If you need to store into memory a copy of a value of a type that isn’t trivial, you cannot use the storeBytes(of:toByteOffset:as:) method. Instead, you must know either initialize the memory or, if you know the memory was already bound to type, assign to the memory. For example, to replace a value stored in a raw pointer p, where U is the current type and T is the new type, use a typed pointer to access and deinitialize the current value before initializing the memory with a new value:
let typedPointer = p.bindMemory(to: U.self, capacity: 1)
typedPointer.deinitialize(count: 1)
p.initializeMemory(as: T.self, repeating: newValue, count: 1)