メモリ割り当て(ゼロ初期化付き)を行います。
[所属]
標準ライブラリ
[指定形式]
#include <stdlib.h>
void *calloc(size_t nmemb, size_t size);
[戻り値]
領域の割り付けに成功した場合,その領域へのポインタを返します。割り付けができなかった場合,nullポインタを返します。
[詳細説明]
大きさがsizeの,要素数nmemb個の配列領域を割り付けます。割り付けられた領域は0で初期化されます。
[注意事項]
記憶域管理の関数は,ヒープ・メモリ領域から必要に応じて自動的にメモリ領域を確保します。
また,デフォルトのサイズは0x1000バイトなので,変更する場合は,ヒープ・メモリ領域を確保する必要があります。領域の確保は,アプリケーションの最初で行ってください。
【ヒープ・メモリ設定例】
#include <stddef.h>
#define SIZEOF_HEAP 0x2000
int _REL_sysheap[SIZEOF_HEAP >> 2];
size_t _REL_sizeof_sysheap = SIZEOF_HEAP;
|
備考 1. | 変数“_REL_sysheap”は,ヒープ・メモリの先頭アドレスを指します。この値は,4の倍数にしてください。 |
備考 2. | 変数“_REL_sizeof_sysheap”に,必要なヒープ・メモリのサイズ(バイト)を設定してください。 |
[使用例]
#include <stdlib.h>
typedef struct {
double d[3];
int i[2];
} s_data;
int func(void) {
s_data *buf;
if((buf = calloc(40, sizeof(s_data))) == NULL) /*s_data40個のための領域を割り付け*/
return(1);
/*処理を記述*/
free(buf); /*領域を開放*/
return(0);
}
|