文書   >   Swift   >   Swift 標準ライブラリ  >     手動でメモリ管理   >   MemoryLayout
MemoryLayout
型のメモリレイアウト。そのサイズ、ストライド、及びアライメントを記述します。
宣言
概要
生のポインタを使用してメモリを割り当てたり結合したりするときに、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
メモリを割り当てるとき、またはメモリ内のインスタンス間の距離を考慮するときは、常にその size の代わりに型のストライドの倍数を使用して下さい。この例では、Point の 4 つのインスタンス用に、初期化されていない生のメモリのスペースを割り当てます。
let count = 4 let pointPointer = UnsafeMutableRawPointer.allocate( bytes: count * MemoryLayout<Point>.stride, alignedTo: MemoryLayout<Point>.alignment)
トピックス
型のレイアウトにアクセスする
これらの静的プロパティを使用して、型のレイアウトにアクセスします。たとえば、Double インスタンスのサイズは MemoryLayout<Double>.size です。
T の連続メモリの足跡 (バイト単位)。
T のデフォルトのメモリアライメント (バイト単位)。
連続したメモリまたは Array<T> に格納されている場合、T の 1 つのインスタンスの開始から次のインスタンスの開始までのバイト数。
値のレイアウトにアクセスする
インスタンスをこれらの静的メソッドに渡して、そのインスタンス型のレイアウトにアクセスします。
static func stride(ofValue: T) -> Int
連続したメモリまたは Array<T> に格納されている場合、T の 1 つのインスタンスの開始から次のインスタンスの開始までのバイト数を返します。
static func size(ofValue: T) -> Int
与えられたインスタンスの連続したメモリの足跡を返します。
static func alignment(ofValue: T) -> Int
T のデフォルトのメモリアライメントを返します。
型プロパティを照会する
static func offset(of: PartialKeyPath<T>) -> Int?
型のメモリ内表現内のインライン保管プロパティのオフセットを返します。
トップへ
トップへ
トップへ
トップへ
トップへ