| 外部インタフェース/API リファレンス | ![]() |
スタンドアロンエンジンまたはMATアプリケーションでユーザ定義のメモリ割り当て関数およびメモリ開放関数を登録
C 言語表示
#include "matrix.h" #include <stdlib.h> void mxSetAllocFcns(calloc_proc callocfcn, free_proc freefcn, realloc_proc reallocfcn, malloc_proc mallocfcn);
引数
callocfcn
mxCallocがメモリ割り当て操作を行うために用いる関数名。ユーザが指定する関数は、通常はANSI Cの関数callocのラッパー関数です。ユーザが作成するcallocfcnは、つぎのプロトタイプをもつ必要があります。
void * callocfcn(size_t nmemb, size_t size); | |
|
ユーザの代わりに行列ライブラリに割り当てさせたい連続する要素数。 |
|
各要素のサイズ。サイズを取得するためには、sizeof演算子またはmxGetElementSizeルーチンを用います。 |
ユーザが指定するcallocfcnは、割り当てられたすべてのメモリがゼロに初期化されるようなメモリを作成する必要があります。
freefcn
mxFreeがメモリの開放操作を行うために用いる関数名。ユーザが作成するfreefcnは、つぎのプロトタイプをもつ必要があります。void freefcn(void *ptr); | |
|
開放するメモリの先頭のポインタ。 |
ユーザが指定するfreefcnは、ptrがNULLであるかどうかを決定するコードを含んでいなければなりません。ptrがNULLである場合は、freefcnはそのメモリを開放しようとしてはなりません。
reallocfcn
mxReallocがメモリの再割り当て操作を行うために用いる関数名。ユーザが作成するreallocfcnは、つぎのプロトタイプをもつ必要があります。void * reallocfcn(void *ptr, size_t size); | |
|
再割り当てするメモリの先頭のポインタ。 |
|
各要素のサイズ。サイズを取得するためには、sizeof演算子またはmxGetElementSizeルーチンを用います。 |
mallocfcn
mallocの代わりに呼び出す関数名。ユーザが作成するmallocfcnは、つぎのプロトタイプをもつ必要があります。void * mallocfcn(size_t n); | |
|
割り当てられるバイト数。 |
ユーザが指定するmallocfcnは、割り当てるメモリを初期化する必要はありません。
詳細
mxSetAllocFcnsを呼び出すことによって、スタンドアロン(非MEX)アプリケーションでユーザ定義のメモリ割り当ておよびメモリ開放ルーチンを確立します。
MEX-ファイルからmxSetAllocFcnsを呼び出すことは無効です。呼び出した場合、コンパイラエラーが生じます。
スタンドアロンアプリケーションでは、mxSetAllocFcnsを呼び出さない場合は、つぎのようになります。
mxCalloc単にANSI Cルーチンcallocを呼び出します。mxFreeは、NULLポインタが渡されていない場合にANSI Cルーチンfreeを呼び出す関数freeを呼び出します。mxReallocは、単にANSI Cルーチンreallocを呼び出します。ユーザ定義のcallocfcn, mallocfcn, freefcn, reallocfcnを作成することによって、メモリの割り当てと開放をカスタマイズすることができます。.
例題
examplesディレクトリのmxサブディレクトリのmxsetallocfcns.cを参照してください。
参考
mxCalloc, mxFree, mxMalloc, mxRealloc
| mxRemoveField | mxSetCell | ![]() |