实例方法
initialize
initializeMemory(as:from:count:)
使用从给定指针开始的值初始化此指针引用的内存,将内存绑定到值的类型,并返回指向初始化内存的类型化指针。
声明
@discardableResult func initializeMemory<T>(
as type: T.Type,
from source: UnsafePointer<T>,
count: Int
) -> UnsafeMutablePointer<T>
返回值
指向此原始指针引用的内存的类型化指针。
参数
type
将此内存绑定到的类型。
source
指向要复制的值的指针。
source..<(source + count)
区域中的内存必须初始化为类型T
,并且不能与目标区域重叠。count
要复制到内存中的
value
的副本数。count
不能为负数。
详述
此指针引用的内存必须未初始化或初始化为普通类型,并且必须正确对齐才能访问 T
。
下面的示例分配足够的原始内存来容纳 Int8
的四个实例,然后使用 initializeMemory(as:from:count:)
方法初始化分配的内存。
let count = 4
let bytesPointer = UnsafeMutableRawPointer.allocate(
byteCount: count * MemoryLayout<Int8>.stride,
alignment: MemoryLayout<Int8>.alignment)
let values: [Int8] = [1, 2, 3, 4]
let int8Pointer = values.withUnsafeBufferPointer { buffer in
return bytesPointer.initializeMemory(as: Int8.self,
from: buffer.baseAddress!,
count: buffer.count)
}
// int8Pointer.pointee == 1
// (int8Pointer + 3).pointee == 4
// After using 'int8Pointer':
int8Pointer.deallocate()
在原始指针 p
上调用此方法后,从 p
开始并继续到 p + count * MemoryLayout<T>.stride
的区域将绑定到类型 T
并初始化。如果T
是非平凡类型,您最终必须取消初始化或从该区域中的值移动以避免泄漏。 source..<(source + count)
区域中的实例不受影响。
可用版本
iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+
相关用法
- Swift UnsafeMutableRawPointer initializeMemory(as:repeating:count:)用法及代码示例
- Swift UnsafeMutableRawPointer ..<(_:_:)用法及代码示例
- Swift UnsafeMutableRawPointer ...(_:_:)用法及代码示例
- Swift UnsafeMutableRawPointer advanced(by:)用法及代码示例
- Swift UnsafeMutableRawPointer ..<(_:)用法及代码示例
- Swift UnsafeMutableRawPointer bindMemory(to:capacity:)用法及代码示例
- Swift UnsafeMutableRawPointer storeBytes(of:toByteOffset:as:)用法及代码示例
- Swift UnsafeMutableRawPointer ...(_:)用法及代码示例
- Swift UnsafeMutableRawPointer withMemoryRebound(to:capacity:_:)用法及代码示例
- Swift UnsafeMutableRawPointer用法及代码示例
- Swift UnsafeMutableRawBufferPointer shuffle()用法及代码示例
- Swift UnsafeMutableRawBufferPointer compactMap(_:)用法及代码示例
- Swift UnsafeMutableRawBufferPointer contains(where:)用法及代码示例
- Swift UnsafeMutableRawBufferPointer allSatisfy(_:)用法及代码示例
- Swift UnsafeMutableRawBufferPointer map(_:)用法及代码示例
- Swift UnsafeMutableRawBufferPointer starts(with:)用法及代码示例
- Swift UnsafeMutableRawBufferPointer isEmpty用法及代码示例
- Swift UnsafeMutableRawBufferPointer sorted()用法及代码示例
- Swift UnsafeMutableRawBufferPointer indices用法及代码示例
- Swift UnsafeMutableRawBufferPointer randomElement(using:)用法及代码示例
- Swift UnsafeMutableRawBufferPointer reduce(_:_:)用法及代码示例
- Swift UnsafeMutableRawBufferPointer split(maxSplits:omittingEmptySubsequences:whereSeparator:)用法及代码示例
- Swift UnsafeMutableRawBufferPointer sort(by:)用法及代码示例
- Swift UnsafeMutableRawBufferPointer lexicographicallyPrecedes(_:)用法及代码示例
- Swift UnsafeMutableRawBufferPointer forEach(_:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 UnsafeMutableRawPointer initializeMemory(as:from:count:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。