Loose-Info.com

Last Update 2019/12/24


TOP - C言語 - stdlib.h - calloc()

指定したバイト数のメモリを指定した個数分確保して、確保されたメモリを参照するポインタを返します。

 戻り値1  = calloc(  引数1  ,  引数2  )

戻り値1 :
void *
成功
確保されたメモリを参照するポインタ
失敗
NULL
引数1 :
size_t
引数2で指定したサイズのメモリを確保する個数
引数2 :
size_t
確保するメモリの一つあたりのサイズ

(例)
#include <stdio.h> #include <stdlib.h> struct struct_test { char str1[10]; char str2[20]; }; int main() { int i; struct struct_test *pst = (struct struct_test *)calloc(10, sizeof(struct struct_test)); if (pst != NULL) { for (i=0; i<5; i++) { sprintf((pst+i)->str1, "str1:%d", i); sprintf((pst+i)->str2, "str2:%d", i); } for (i=0; i<5; i++) { printf("str1[%d] -> %s\n", i, (pst+i)->str1); printf("str2[%d] -> %s\n\n", i, (pst+i)->str2); } free(pst); } else { printf("確保失敗\n"); } return 0; }

実行結果
str1[0] -> str1:0 str2[0] -> str2:0 str1[1] -> str1:1 str2[1] -> str2:1 str1[2] -> str1:2 str2[2] -> str2:2 str1[3] -> str1:3 str2[3] -> str2:3 str1[4] -> str1:4 str2[4] -> str2:4