Generic Enumeration

MemoryLayout

The memory layout of a type, describing its size, stride, and alignment. ある型のメモリレイアウト、それはそれのサイズ、ストライド、およびアライメントを記述します。

Declaration 宣言

@frozen enum MemoryLayout<T>

Overview 概要

You can use MemoryLayout as a source of information about a type when allocating or binding memory using raw pointers. The following example declares a Point type with x and y coordinates and a Boolean isFilled property. あなたは、MemoryLayoutをある型についての情報源として使うことが、生のポインタを使ってメモリをアロケートまたはバインドする時に可能です。以下の例は、Point型をxおよびy座標、そしてブールのisFilledプロパティで宣言します。


struct Point {
    let x: Double
    let y: Double
    let isFilled: Bool
}

The size, stride, and alignment of the Point type are accessible as static properties of MemoryLayout<Point>. Point型のサイズ、ストライド、そしてアライメントは、MemoryLayout<Point>の静的プロパティとしてアクセス可能です。


// MemoryLayout<Point>.size == 17
// MemoryLayout<Point>.stride == 24
// MemoryLayout<Point>.alignment == 8

Always use a multiple of a type’s stride instead of its size when allocating memory or accounting for the distance between instances in memory. This example allocates uninitialized raw memory with space for four instances of Point. メモリをアロケートするまたはメモリ中のインスタンス間の隔たりを計上する場合には、常にある型のもつstrideの倍数を使ってください、それのsizeではなく。この例は、未初期化の生のメモリをPointの4つのインスタンス用の空間でアロケートします。


let count = 4
let pointPointer = UnsafeMutableRawPointer.allocate(
        byteCount: count * MemoryLayout<Point>.stride,
        alignment: MemoryLayout<Point>.alignment)

Topics 話題

Accessing the Layout of a Type ある型のレイアウトにアクセスする

Use these static properties to access a type's layout. For example, the size of a Double instance is MemoryLayout<Double>.size. これらの静的プロパティを使ってある型の持つレイアウトにアクセスしてください。例えば、Doubleインスタンスのサイズは、MemoryLayout<Double>.sizeです。

Accessing the Layout of a Value ある値のレイアウトにアクセスする

Pass an instance to these static methods to acess the layout for that instance's type. あるインスタンスをこれら静的メソッドに渡すことで、そのインスタンスの持つ型に対するレイアウトにアクセスしてください。

Querying Type Properties 型プロパティに問い合わせる