枚举
Memory
MemoryLayout
类型的内存布局,说明其大小、步幅和对齐方式。
声明
@frozen enum MemoryLayout<T>
概述
在使用原始指针分配或绑定内存时,您可以使用MemoryLayout
作为类型信息的来源。下面的示例声明了一个带有 x
和 y
坐标以及布尔值 isFilled
属性的 Point
类型。
struct Point {
let x: Double
let y: Double
let isFilled: Bool
}
Point
类型的大小、步幅和对齐方式可作为 MemoryLayout<Point>
的静态属性访问。
// MemoryLayout<Point>.size == 17
// MemoryLayout<Point>.stride == 24
// MemoryLayout<Point>.alignment == 8
在分配内存或考虑内存中实例之间的距离时,始终使用类型的 stride
的倍数而不是其 size
。此示例为 Point
的四个实例分配未初始化的原始内存空间。
let count = 4
let pointPointer = UnsafeMutableRawPointer.allocate(
byteCount: count * MemoryLayout<Point>.stride,
alignment: MemoryLayout<Point>.alignment)
可用版本
iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+
相关用法
- Swift MemoryLayout alignment(ofValue:)用法及代码示例
- Swift MemoryLayout stride(ofValue:)用法及代码示例
- Swift MemoryLayout offset(of:)用法及代码示例
- Swift MemoryLayout size(ofValue:)用法及代码示例
- Swift MutableCollection partition(by:)用法及代码示例
- Swift Mirror description用法及代码示例
- Swift MutableCollection subscript(_:)用法及代码示例
- Swift MutableCollection sort(by:)用法及代码示例
- Swift Mirror.Children用法及代码示例
- Swift Mirror.AncestorRepresentation.customized(_:)用法及代码示例
- Swift ManagedBufferPointer用法及代码示例
- Swift MutableCollection shuffle()用法及代码示例
- Swift MutableCollection用法及代码示例
- Swift MutableCollection reverse()用法及代码示例
- Swift Mirror descendant(_:_:)用法及代码示例
- Swift MutableCollection sort()用法及代码示例
- Swift Mirror用法及代码示例
- Swift MutableCollection shuffle(using:)用法及代码示例
- Swift KeyValuePairs flatMap(_:)用法及代码示例
- Swift String.UTF8View first用法及代码示例
- Swift Result.Publisher zip(_:_:_:)用法及代码示例
- Swift Optional.Publisher reduce(_:_:)用法及代码示例
- Swift Int8 ~(_:)用法及代码示例
- Swift SetAlgebra isStrictSubset(of:)用法及代码示例
- Swift UInt +(_:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 MemoryLayout。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。