calloc函數(shù)是C語言中的一個動態(tài)內(nèi)存分配函數(shù),用來分配一片連續(xù)的內(nèi)存空間,并將其初始化為0。其函數(shù)原型如下所示:
void *calloc(size_t num, size_t size);
參數(shù)說明:
函數(shù)返回值為一個指向分配內(nèi)存起始地址的指針,如果分配失敗則返回NULL。
calloc函數(shù)的作用是分配num個大小為size的連續(xù)內(nèi)存空間,并將每個字節(jié)都初始化為0。與malloc函數(shù)不同的是,calloc在分配內(nèi)存時會自動將其所有字節(jié)初始化為0,而malloc不會進行初始化操作。
使用calloc函數(shù)的一個例子如下:
#include <stdio.h>
#include <stdlib.h>
int main() {
int *array;
int size = 5;
// 分配一個包含5個int類型元素的數(shù)組
array = (int *)calloc(size, sizeof(int));
if (array == NULL) {
printf("內(nèi)存分配失敗\n");
return 1;
}
// 輸出數(shù)組元素
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
printf("\n");
// 釋放內(nèi)存
free(array);
return 0;
}
上述代碼使用calloc函數(shù)分配了一個包含5個int類型元素的數(shù)組,并將每個元素都初始化為0。最后通過free函數(shù)釋放了分配的內(nèi)存空間。
需要注意的是,calloc函數(shù)分配的內(nèi)存在使用完之后需要使用free函數(shù)釋放,否則會造成內(nèi)存泄漏。同時,由于calloc會進行內(nèi)存初始化操作,因此在分配大塊內(nèi)存時相對較慢,如果只是簡單地分配內(nèi)存而不需要初始化,推薦使用malloc函數(shù)。