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
引数
ptr
mxCalloc
、mxMalloc
、またはmxRealloc
によって割り当てられたメモリ パーセルの先頭へのポインター。ptr
がNULL
ポインターの場合、関数は何も行いません。
説明
mxFree
は、MATLAB® メモリ管理機能を使用してヒープ領域の割り当てを解除します。この関数により、エラーや停止 (Ctrl+C) 状態の発生時に適切なメモリ管理を行うことができます。
C MATLAB アプリケーションでヒープ領域の割り当てを解除するには、ANSI® C の関数 free
ではなく、mxFree
を呼び出します。
MAT またはエンジン スタンドアロン アプリケーションを除く MEX ファイルでは、MATLAB メモリ管理機能によって、次の関数により割り当てられたすべてのメモリのリストが維持されています。
mxCalloc
mxMalloc
mxRealloc
mxArrayToString
mxArrayToUTF8String
メモリ管理機能は、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
を使用してください。
例
の次の例を参照してください。matlabroot
/extern/examples/mx
の次の例を参照してください。matlabroot
/extern/examples/refbook
の次の例を参照してください。matlabroot
/extern/examples/mex
参考
mexAtExit
, mexMakeArrayPersistent
, mexMakeMemoryPersistent
, mxCalloc
, mxDestroyArray
, mxMalloc
, mxRealloc
, mxArrayToString
, mxArrayToUTF8String
バージョン履歴
R2006a より前に導入