外部インタフェース/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 | ![]() |