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