Everything

calloc


メモリ割り当て(ゼロ初期化付き)を行います。

[所属]

標準ライブラリ

[指定形式]

#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);
}