可変サイズの配列に対するメモリ割り当ての制御
動的メモリ割り当てでは、スタックでメモリが静的に割り当てられるのではなく、実行時に必要に応じてヒープでメモリが割り当てられます。動的メモリ割り当ては次のような場合に便利です。
配列の上限がわからない。
大きい配列に対してスタックでメモリを割り当てたくない。
動的メモリ割り当てとこのメモリの解放によって、生成されたコードの実行速度が遅くなる場合があります。可変サイズの配列に対する動的メモリ割り当ての使用を制御するには、次を実行できます。
可変サイズの配列に対する上限の指定
制限なしの可変サイズの配列では、コード ジェネレーターはヒープでメモリを動的に割り当てます。上限があり、サイズ (バイト) が動的メモリ割り当てしきい値よりも小さい可変サイズの配列では、コード ジェネレーターはスタックでメモリを静的に割り当てます。動的メモリ割り当てを回避する方法は次のとおりです。
可変サイズの配列の上限を指定します。可変サイズ配列の上限の指定を参照してください。
配列のサイズ (バイト) が動的メモリ割り当てしきい値よりも小さいか確認します。しきい値よりも大きい配列に対して動的メモリ割り当てを使用するためのコード ジェネレーターの構成を参照してください。
動的メモリ割り当ての無効化
既定では、可変サイズ配列に対して動的メモリ割り当てが有効になります。無効にするには、次を行います。
コード生成の構成オブジェクトで、
EnableDynamicMemoryAllocation
パラメーターをfalse
に設定します。MATLAB® Coder™ アプリの [メモリ] 設定で、[動的メモリ割り当てを有効化] チェック ボックスをオフにします。
動的メモリ割り当てを無効化する場合は、可変サイズの配列に対して上限を指定しなければなりません。
しきい値よりも大きい配列に対して動的メモリ割り当てを使用するためのコード ジェネレーターの構成
すべての可変サイズの配列に対して動的なメモリの割り当てを無効にするのではなく、コード ジェネレーターで動的メモリ割り当てを使用する配列のサイズを指定できます。
動的メモリ割り当てしきい値を使用して次を実行できます。
小さい配列の動的メモリ割り当てを無効にする。小さい配列では、静的メモリ割り当てによって生成コードの速度が向上する場合があります。ただし、静的メモリ割り当てによって未使用のストレージ領域ができる可能性があります。未使用のストレージ領域は、小さい配列の場合はそれほど大きな考慮事項ではないと判断できます。
大きい配列の動的メモリ割り当てを有効にする。大きな配列では、動的メモリ割り当ての使用によってストレージ要件を大幅に減らすことができます。
動的メモリ割り当ての既定のしきい値は 64 キロバイトです。しきい値を変更するには、次の手順を実行します。
コード生成の構成オブジェクトで、
EnableDynamicMemoryAllocation
をtrue
に設定し、DynamicMemoryAllocationThreshold
の値を設定します。MATLAB Coder アプリの [メモリ設定] で、[動的メモリ割り当てを有効化] チェック ボックスをオンにし、[動的メモリ割り当てしきい値] の値を設定します。