外部インタフェース/API リファレンス    
mxSetAllocFcns

スタンドアロンエンジンまたはMATアプリケーションでユーザ定義のメモリ割り当て関数およびメモリ開放関数を登録

C 言語表示

引数
callocfcn
   mxCallocがメモリ割り当て操作を行うために用いる関数名。ユーザが指定する関数は、通常はANSI Cの関数callocのラッパー関数です。ユーザが作成するcallocfcnは、つぎのプロトタイプをもつ必要があります。

void * callocfcn(size_t nmemb, size_t size);
nmemb
ユーザの代わりに行列ライブラリに割り当てさせたい連続する要素数。
size
各要素のサイズ。サイズを取得するためには、sizeof演算子またはmxGetElementSizeルーチンを用います。

ユーザが指定するcallocfcnは、割り当てられたすべてのメモリがゼロに初期化されるようなメモリを作成する必要があります。

freefcn
   mxFreeがメモリの開放操作を行うために用いる関数名。ユーザが作成するfreefcnは、つぎのプロトタイプをもつ必要があります。

void freefcn(void *ptr);
ptr
開放するメモリの先頭のポインタ。

ユーザが指定するfreefcnは、ptrNULLであるかどうかを決定するコードを含んでいなければなりません。ptrNULLである場合は、freefcnはそのメモリを開放しようとしてはなりません。

reallocfcn
   mxReallocがメモリの再割り当て操作を行うために用いる関数名。ユーザが作成するreallocfcnは、つぎのプロトタイプをもつ必要があります。

void * reallocfcn(void *ptr, size_t size);
ptr
再割り当てするメモリの先頭のポインタ。
size
各要素のサイズ。サイズを取得するためには、sizeof演算子またはmxGetElementSizeルーチンを用います。

mallocfcn
   API関数がメモリの再割り当て操作を行うためにmallocの代わりに呼び出す関数名。ユーザが作成するmallocfcnは、つぎのプロトタイプをもつ必要があります。

void * mallocfcn(size_t n);
n
割り当てられるバイト数。

ユーザが指定するmallocfcnは、割り当てるメモリを初期化する必要はありません。

詳細

mxSetAllocFcnsを呼び出すことによって、スタンドアロン(非MEX)アプリケーションでユーザ定義のメモリ割り当ておよびメモリ開放ルーチンを確立します。

MEX-ファイルからmxSetAllocFcnsを呼び出すことは無効です。呼び出した場合、コンパイラエラーが生じます。

スタンドアロンアプリケーションでは、mxSetAllocFcnsを呼び出さない場合は、つぎのようになります。

ユーザ定義のcallocfcn, mallocfcn, freefcn, reallocfcnを作成することによって、メモリの割り当てと開放をカスタマイズすることができます。.

例題

examplesディレクトリのmxサブディレクトリのmxsetallocfcns.cを参照してください。

参考

mxCalloc, mxFree, mxMalloc, mxRealloc


 mxRemoveField mxSetCell