Main Content

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

mxCallocmxMalloc、または mxRealloc によって割り当てられたメモリ パーセルの先頭へのポインター。ptrNULL ポインターの場合、関数は何も行いません。

説明

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 を使用するかどうかは、指定したメモリ パーセルが存続するかどうかによって決まります。既定では、mxCallocmxMallocmxReallocmxArrayToString、および 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 の次の例を参照してください。

バージョン履歴

R2006a より前に導入