Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

可変サイズの配列に対するメモリ割り当ての制御

動的メモリ割り当てでは、スタックでメモリが静的に割り当てられるのではなく、実行時に必要に応じてヒープでメモリが割り当てられます。動的メモリ割り当ては次のような場合に便利です。

  • 配列の上限がわからない。

  • 大きい配列に対してスタックでメモリを割り当てたくない。

動的メモリ割り当てとこのメモリの解放によって、生成されたコードの実行速度が遅くなる場合があります。可変サイズの配列に対する動的メモリ割り当ての使用を制御するには、次を実行できます。

可変サイズの配列に対する上限の指定

制限なしの可変サイズの配列では、コード ジェネレーターはヒープでメモリを動的に割り当てます。上限があり、サイズ (バイト) が動的メモリ割り当てしきい値よりも小さい可変サイズの配列では、コード ジェネレーターはスタックでメモリを静的に割り当てます。動的メモリ割り当てを回避する方法は次のとおりです。

  1. 可変サイズの配列の上限を指定します。可変サイズ配列の上限の指定を参照してください。

  2. 配列のサイズ (バイト) が動的メモリ割り当てしきい値よりも小さいか確認します。しきい値よりも大きい配列に対して動的メモリ割り当てを使用するためのコード ジェネレーターの構成を参照してください。

動的メモリ割り当ての無効化

既定では、動的メモリ割り当ては有効になっています。無効にするには、次を行います。

  • コード生成の構成オブジェクトで、DynamicMemoryAllocation パラメーターを 'Off' に設定します。

  • MATLAB® Coder™ アプリの [メモリ] 設定で、[動的メモリ割り当て][行わない] に設定します。

動的メモリ割り当てを無効化する場合は、可変サイズの配列に対して上限を指定しなければなりません。

しきい値よりも大きい配列に対して動的メモリ割り当てを使用するためのコード ジェネレーターの構成

すべての可変サイズの配列に対して動的なメモリの割り当てを無効にするのではなく、コード ジェネレーターで動的メモリ割り当てを使用する配列のサイズを指定できます。

動的メモリ割り当てしきい値を使用して次を実行できます。

  • 小さい配列の動的メモリ割り当てを無効にする。小さい配列では、静的メモリ割り当てによって生成コードの速度が向上する場合があります。ただし、静的メモリ割り当てによって未使用のストレージ領域ができる可能性があります。未使用のストレージ領域は、小さい配列の場合はそれほど大きな考慮事項ではないと判断できます。

  • 大きい配列の動的メモリ割り当てを有効にする。大きな配列では、動的メモリ割り当ての使用によってストレージ要件を大幅に減らすことができます。

動的メモリ割り当ての既定のしきい値は 64 キロバイトです。しきい値を変更するには、次の手順を実行します。

  • コード生成の構成オブジェクトで、DynamicMemoryAllocationThreshold を設定します。

  • MATLAB Coder アプリの [メモリ] 設定で、[動的メモリ割り当てしきい値] を設定します。

コード ジェネレーターに、サイズがしきい値以上の可変サイズの配列に対して動的メモリ割り当てを使用するよう指示するには、次を行います。

  • 構成オブジェクトで、DynamicMemoryAllocationThreshold'Threshold' に設定します。

  • MATLAB Coder アプリの [メモリ] 設定で、[動的メモリ割り当てしきい値][配列の最大サイズがしきい値以上になった場合] に設定します。

関連するトピック