メモリの管理およびクリーンアップ
概要
生成された C++ コードには、オブジェクト デストラクターを介した一貫性のあるガーベジ コレクションが提供されます。また、MATLAB® Runtime の内部メモリ マネージャーにより、ヒープの断片化が生じないように最適化されます。
それでもご使用のシステムでメモリ制約がある場合は、MATLAB で配列を事前割り当てしてみてください。これにより、メモリ マネージャーの呼び出し回数が減り、ヒープが断片化する度合いも減ります。
共有ライブラリに mxArray を渡す
MATLAB Runtime を使用するアプリケーションで mxArray
を作成すると、それは MATLAB Runtime の管理対象メモリ空間に作成されます。
したがって、mclInitializeApplication
を呼び出す前に mxArray
を作成しない (または他の MATLAB 関数を呼び出さない) ことが非常に重要です。
入力が MATLAB で永続変数またはグローバル変数に割り当てられている場合でも、コードで特定の mxArray
が必要なくなったときに mxDestroyArray
を呼び出すのが安全です。MATLAB では参照カウントを使用して、mxDestroyArray
が呼び出されたときに、基となるデータへの別の参照がまだ存在している場合は、メモリが解放されないようにします。基となるメモリが解放されない場合でも、mxDestroyArray
に渡された mxArray
は無効になります。
mclInitializeApplication
および mclTerminateApplication
の詳細については、C 共有ライブラリの呼び出しを参照してください。
mxArray
の詳細については、C 行列 APIを参照してください。