Main Content

mxCalloc (C および Fortran)

MATLAB メモリ マネージャーを使用して配列の動的メモリを割り当て、0 に初期化

C 構文

#include "matrix.h"
#include <stdlib.h>
void *mxCalloc(mwSize n, mwSize size);

Fortran 構文

#include "fintrf.h"
mwPointer mxCalloc(n, size)
mwSize n, size

引数

n

割り当てる要素の数。これは非負の数でなければなりません。

size

要素ごとのバイト数 (C の sizeof 演算子が要素ごとのバイト数を計算します)。

戻り値

成功した場合は、割り当てられた動的メモリの先頭へのポインター。MAT またはエンジン スタンドアロン アプリケーションで失敗した場合、mxCalloc は、C では NULL (Fortran では 0) を返します。MEX ファイルで失敗した場合、MEX ファイルは終了し、制御は MATLAB® プロンプトに戻ります。

mxCalloc は、十分な空きヒープ領域がないと失敗します。

説明

mxCalloc は、それぞれ size バイトの n 要素を保持するのに十分な連続ヒープ領域を割り当て、新たに割り当てられたこのメモリを 0 に初期化します。MATLAB アプリケーションでメモリを割り当てるには、ANSI® C の関数 calloc ではなく、mxCalloc を使用します。

MAT やエンジン アプリケーション以外の MEX ファイルでは、mxCalloc は割り当てられたメモリを MATLAB メモリ マネージャーに登録します。制御が MATLAB プロンプトに戻ると、メモリ マネージャーはこのメモリを自動的に解放、つまり "割り当て解除" します。

この関数によって作成されるメモリの管理方法は、それに割り当てられるデータの目的によって異なります。mxSetDoubles のような関数を使用してメモリを plhs[] の出力引数に割り当てる場合、MATLAB はメモリを解放しなければなりません。

データを内部で使用する場合、MATLAB メモリ マネージャーは、関数によって割り当てられたすべてのメモリのリストを維持し、制御が MATLAB プロンプトに戻ったときにメモリを自動的に解放 (割り当て解除) します。一般的には、MEX ファイル関数が独自の一時的な配列を破棄し、動的に割り当てられた独自のメモリを解放することを推奨します。自動メカニズムに依存するより、ソース MEX ファイルでこのクリーンアップを実行する方がより効率的です。したがって、この関数によって割り当てられたメモリを使用し終わったら、mxFree を呼び出してメモリの割り当てを解除してください。

このデータを出力引数に割り当てずに、MEX ファイルの終了後にデータを存続させる場合は、この関数の呼び出し後に mexMakeMemoryPersistent を呼び出します。永続的なメモリを使用する MEX ファイルを作成する場合は、MEX ファイルがクリアされたときのために、関数 mexAtExit を登録し、割り当てられたメモリを解放するようにしてください。

matlabroot/extern/examples/mex の次の例を参照してください。

matlabroot/extern/examples/refbook の次の例を参照してください。

matlabroot/extern/examples/mx の次の例を参照してください。

バージョン履歴

R2006a より前に導入