ネットワークストリームエンドポイントバッファ用にメモリを割り当てる
- 更新日2025-08-27
- 3分で読める
ネットワークストリームエンドポイントは、データ転送にFIFOバッファを使用します。「ネットワークストリーム書き込みエンドポイントを作成」関数と「ネットワークストリーム読み取りエンドポイントを作成」関数のデータタイプとバッファサイズ入力により、必要なメモリとバッファのサイズが決まります。非スカラーデータタイプ用の初期バッファメモリが割り当てられるタイミングは、これらの関数の要素割り当てモード入力により決まります。
選択した割り当てモードに関係なく、バッファサイズは、アプリケーションが使用するメモリ量に影響を与えます。アプリケーションをテストするときは、常にメモリ使用を監視してください。
ネットワークストリームエンドポイントバッファの割り当てモードを指定する
割り当てモードを指定するには、「ネットワークストリーム書き込みエンドポイントを作成」関数と「ネットワークストリーム読み取りエンドポイントを作成」関数の要素割り当てモード入力を指定します。
アプリケーションが非スカラーデータを転送するが、実行前には各データ要素の最大サイズが確定できない場合は、必要に応じて割り当てモードを使用します。必要に応じて割り当てモードにした場合は、ネットワークストリームを作成したときに、各データ要素へのポインタまたはハンドルの作成に十分なメモリだけが割り当てられます。次に、各要素がバッファに入るときに、その要素用の追加メモリがダイナミックに割り当てられます。
アプリケーションが非スカラーデータを転送するが、実行前には各データ要素の最大サイズが確定できる場合は、事前割り当てモードを使用します。事前割り当てモードでは、「「ネットワークストリーム書き込みエンドポイントを作成」関数と「ネットワークストリーム読み取りエンドポイントを作成」関数は、データタイプ入力と書き込みバッファサイズまたは読み取りバッファサイズ入力に基づいて初期バッファメモリを割り当てます。
エンドポイントバッファを事前に割り当てるには、予想される最大サイズをもつ要素をデータタイプ入力に配線します。以下の図は、エンドポイント作成時に、最大サイズがExample stringに等しい100個の文字列要素用のメモリを割り当てる「ネットワークストリーム書き込みエンドポイントを作成」関数を示しています。
| メモ 実行時に要素が事前に割り当てられたよりも多くのメモリを必要とする場合には、追加のメモリがダイナミックに割り当てられます。 |