Structure

UnsafeMutableRawBufferPointer

A mutable nonowning collection interface to the bytes in a region of memory. メモリのいち領域中のバイトに対する可変の非所有コレクションインターフェイス。

Declaration 宣言

@frozen struct UnsafeMutableRawBufferPointer

Overview 概要

You can use an UnsafeMutableRawBufferPointer instance in low-level operations to eliminate uniqueness checks and release mode bounds checks. Bounds checks are always performed in debug mode. あなたは、UnsafeMutableRawBufferPointerインスタンスを低水準演算において使用することで、固有性検査とリリースモード境界検査を省くことができます。境界検査は、デバッグモードにおいて常に実行されます。

An UnsafeMutableRawBufferPointer instance is a view of the raw bytes in a region of memory. Each byte in memory is viewed as a UInt8 value independent of the type of values held in that memory. Reading from and writing to memory through a raw buffer are untyped operations. Accessing this collection’s bytes does not bind the underlying memory to UInt8. UnsafeMutableRawBufferPointerインスタンスは、メモリのある領域の中の生のバイトのある見方(ビュー)です。メモリ中の各バイトは、そのメモリ中に保持される値の型に影響を受けないUInt8値として眺められます。ある生のバッファを通してメモリから読み込むそしてそれへ書き込むことは、型無し演算です。このコレクションのもつバイトにアクセスすることは、基礎をなすメモリをUInt8へとバインドしません。

In addition to its collection interface, an UnsafeMutableRawBufferPointer instance also supports the following methods provided by UnsafeMutableRawPointer, including bounds checks in debug mode: それのコレクションインターフェイスに加えて、UnsafeMutableRawBufferPointerインスタンスはまた、UnsafeMutableRawPointerによって提供される以下のメソッドをサポートし、デバッグモードにおける境界検査を含んでいます。

  • load(fromByteOffset:as:)

  • storeBytes(of:toByteOffset:as:)

  • copyMemory(from:)

To access the underlying memory through typed operations, the memory must be bound to a trivial type. 型付演算を通して基礎をなすメモリにアクセスするには、メモリは自明型に束縛されなければなりません。

UnsafeMutableRawBufferPointer Semantics UnsafeMutableRawBufferPointer意味論

An UnsafeMutableRawBufferPointer instance is a view into memory and does not own the memory that it references. Copying a variable or constant of type UnsafeMutableRawBufferPointer does not copy the underlying memory. However, initializing another collection with an UnsafeMutableRawBufferPointer instance copies bytes out of the referenced memory and into the new collection. UnsafeMutableRawBufferPointerインスタンスは、メモリに対するある見方(ビュー)であり、それが参照するメモリ自体ではありません。型UnsafeMutableRawBufferPointerの変数や定数をコピーすることは、基礎をなすメモリをコピーしません。しかしながら、別のコレクションをUnsafeMutableRawBufferPointerインスタンスで初期化することは、バイトを参照されたメモリから外へそして新しいコレクションへとコピーします、

The following example uses someBytes, an UnsafeMutableRawBufferPointer instance, to demonstrate the difference between assigning a buffer pointer and using a buffer pointer as the source for another collection’s elements. Here, the assignment to destBytes creates a new, nonowning buffer pointer covering the first n bytes of the memory that someBytes references—nothing is copied: 以下の例はsomeBytesUnsafeMutableRawBufferPointerインスタンスを使って、バッファポインタの割り当することとバッファポインタを別のコレクションの要素のソースとして使うことの間の違いを実演します。ここで、destBytesへの割り当ては、someBytesが参照するメモリの最初のnバイトを変換して、新しい、非所有のバッファポインタを作成します — コピーされるものは何もありません:


var destBytes = someBytes[0..<n]

Next, the bytes referenced by destBytes are copied into byteArray, a new [UInt8] array, and then the remainder of someBytes is appended to byteArray: 次に、destBytesによって参照されるバイトはbyteArray、新しい[UInt8]配列へとコピーされます、そしてそれからsomeBytesの残りはbyteArrayに加えられます:


var byteArray: [UInt8] = Array(destBytes)
byteArray += someBytes[n..<someBytes.count]

Assigning into a ranged subscript of an UnsafeMutableRawBufferPointer instance copies bytes into the memory. The next n bytes of the memory that someBytes references are copied in this code: UnsafeMutableRawBufferPointerインスタンスの範囲指定された添え字に対してアサインすることは、それらバイトをメモリにコピーします。someBytesが参照する次のnバイトのメモリは、このコードでコピーされます:


destBytes[0..<n] = someBytes[n..<(n + n)]

Topics 話題

Type Aliases 型エイリアス

Initializers イニシャライザ

Instance Properties 様々なインスタンスプロパティ

Instance Methods インスタンスメソッド

Type Methods 型メソッド

Subscripts 添え字

Relationships 関係

See Also 参照

Raw Pointers 生のポインタ