mxFree (C および Fortran)
関数 mxCalloc、mxMalloc、mxRealloc、mxArrayToString または mxArrayToUTF8String によって割り当てられた動的メモリの解放
C 構文
#include "matrix.h" void mxFree(void *ptr);
Fortran 構文
#include "fintrf.h" subroutine mxFree(ptr) mwPointer ptr
引数
ptrmxCalloc、mxMalloc、またはmxReallocによって割り当てられたメモリ パーセルの先頭へのポインター。ptrがNULLポインターの場合、関数は何も行いません。
説明
mxFree は、MATLAB® メモリ管理機能を使用してヒープ領域の割り当てを解除します。この関数により、エラーや停止 (Ctrl+C) 状態の発生時に適切なメモリ管理を行うことができます。
C MATLAB アプリケーションでヒープ領域の割り当てを解除するには、ANSI® C の関数 free ではなく、mxFree を呼び出します。
MAT またはエンジン スタンドアロン アプリケーションを除く MEX ファイルでは、MATLAB メモリ管理機能によって、次の関数により割り当てられたすべてのメモリのリストが維持されています。
mxCallocmxMallocmxReallocmxArrayToStringmxArrayToUTF8String
メモリ管理機能は、MEX ファイルが完了し、制御が MATLAB プロンプトに戻ったときに、MEX ファイルにより管理されるすべてのパーセルの割り当てを自動的に解除します。mxFree は、メモリ管理のパーセル リストからもメモリ パーセルを削除します。
mxFree が MAT またはエンジン スタンドアロン MATLAB アプリケーションに含まれている場合、アドレス ptr で始まる連続ヒープ領域の割り当てを単に解除します。
MEX ファイルで mxFree を使用するかどうかは、指定したメモリ パーセルが存続するかどうかによって決まります。既定では、mxCalloc、mxMalloc、mxRealloc、mxArrayToString、および mxArrayToUTF8String によって作成されたメモリ パーセルは存続しません。メモリ管理機能は、MEX ファイルが完了するたびに永続しないすべてのメモリを自動的に解放します。したがって、mxFree を呼び出さなくても、MATLAB がメモリの解放を自動的に処理します。いずれにしても、プログラミングの際には、メモリは不要になったら割り当てを解除するようにしてください。それにより、システム全体の実行効率が一般的に向上します。
アプリケーションが mexMakeMemoryPersistent を呼び出した場合、指定されたメモリ パーセルは永続的になります。MEX ファイルが完了したとき、メモリ管理機能は永続的なメモリ パーセルを解放しません。したがって、永続的なメモリ パーセルを解放する唯一の方法は、mxFree を呼び出すことです。通常、MEX ファイルは mexAtExit を呼び出してクリーンアップ ハンドラーを登録します。クリーンアップ ハンドラーは mxFree を呼び出します。
行列ライブラリ API の他の関数によって作成された mxArray には mxFree を使用しないでください。代わりに mxDestroyArray を使用してください。
例
例を開くには、次のように入力します。
edit([fullfile(matlabroot,"extern","examples","mx","filename")]);
ここで filename は、次のようになります。
例を開くには、次のように入力します。
edit([fullfile(matlabroot,"extern","examples","refbook","filename")]);
ここで filename は、次のようになります。
例を開くには、次のように入力します。
edit([fullfile(matlabroot,"extern","examples","mex","filename")]);
ここで filename は、次のようになります。
参考
mexAtExit, mexMakeArrayPersistent, mexMakeMemoryPersistent, mxCalloc, mxDestroyArray, mxMalloc, mxRealloc, mxArrayToString, mxArrayToUTF8String
バージョン履歴
R2006a より前に導入