基本介紹
函式簡介
- 原型:void* calloc(unsigned int num,unsigned int size);
- 功能:在記憶體的動態存儲區中分配num個長度為size的連續空間;
- 注意:num:對象個數,size:對象占據的記憶體位元組數,相較於malloc函式,calloc函式會自動將記憶體初始化為0;
與malloc的區別
- 原型:extern void* malloc(unsigned int size);
- 功能:動態分配記憶體;
- 注意:size僅僅為申請記憶體位元組大小,與申請記憶體塊中存儲的數據類型無關,故編程時建議通過以下方式給出,"長度 * sizeof(數據類型)";
用 法
calloc()函式為nmemb個元素的數組分配記憶體空間,其中,每個元素的長度都是size個位元組。如果要求的空間無效,那么此函式返回指針。在分配了記憶體之後,calloc()函式會通過將所有位設定為0的方式進行初始化。比如,調用calloc()函式為n個整數的數組分配存儲空間,且保證所有整數初始化為0:
套用舉例
程式例1
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char*str = NULL; /*分配記憶體空間*/ str = (char*)calloc(10,sizeof(char)); /*將hello寫入*/ strcpy(str, "Hello"); /*顯示變數內容*/ printf("String is %s\n",str); /*釋放空間*/ free(str); return 0;}
程式例2
#include<stdio.h>#include<stdlib.h>int main(){ int i; int* pn = (int*)calloc(10, sizeof(int)); for(i = 0;i < 10;i++) printf("%d", pn[i]); printf("\n"); free(pn); return 0;}