Generic Instance Method 総称体インスタンスメソッド

bindMemory(to:capacity:)

Binds the memory to the specified type and returns a typed pointer to the bound memory. メモリを指定された型へ束縛して、束縛されたメモリに対する型付ポインタを返します。

Declaration 宣言

@discardableResult func bindMemory<T>(to type: T.Type, capacity count: Int) -> UnsafeMutablePointer<T>

Parameters パラメータ

type

The type T to bind the memory to. この型Tへとメモリを束縛することになります。

count

The amount of memory to bind to type T, counted as instances of T. Tへと束縛するメモリの量、Tのインスタンスとして数えられます。

Return Value 戻り値

A typed pointer to the newly bound memory. The memory in this region is bound to T, but has not been modified in any other way. The number of bytes in this region is count * MemoryLayout<T>.stride. 新しく束縛されたメモリへの型付ポインタ。この領域の中のメモリは、Tへと束縛されます、しかし他のいかなる方法においても変更されていません。この領域の中のバイト数は、count * MemoryLayout<T>.strideです。

Discussion 解説

Use the bindMemory(to:capacity:) method to bind the memory referenced by this pointer to the type T. The memory must be uninitialized or initialized to a type that is layout compatible with T. If the memory is uninitialized, it is still uninitialized after being bound to T. bindMemory(to:capacity:)メソッドを使用して、このポインタによって参照されるメモリを型Tへと束縛してください。メモリは、未初期化であるかTとレイアウト互換でなければなりません。メモリが未初期化であるならば、それはTに束縛された後も依然として未初期化です。

In this example, 100 bytes of raw memory are allocated for the pointer bytesPointer, and then the first four bytes are bound to the Int8 type. この例では、100バイトの生のメモリがポインタbytesPointerに対して割り当てられて、それから最初の4バイトがInt8型に束縛されます。


let count = 4
let bytesPointer = UnsafeMutableRawPointer.allocate(
        byteCount: 100,
        alignment: MemoryLayout<Int8>.alignment)
let int8Pointer = bytesPointer.bindMemory(to: Int8.self, capacity: count)

After calling bindMemory(to:capacity:), the first four bytes of the memory referenced by bytesPointer are bound to the Int8 type, though they remain uninitialized. The remainder of the allocated region is unbound raw memory. All 100 bytes of memory must eventually be deallocated. bindMemory(to:capacity:)を呼んだ後、bytesPointerによって参照されるメモリの最初の4バイトはInt8型に束縛されます、もっともそれらは未初期化のままであるけれども。割り当てられた領域の残りは、生のメモリに束縛されません。メモリの100バイトすべては、そのうち割り当てられなければなりません。