用calloc()函数分配内存

来源:互联网 发布:qt linux 安装包下载 编辑:程序博客网 时间:2024/06/10 15:44

在<stdlib.h>头文件中声明的calloc()函数与malloc()函数相比有两个优点。第一,它把内存分配为给定大小的数组,第二,它初始化了所分配的内存,所有的位都是0。calloc()函数需要两个参数:数组的元素个数和数组元素占用的字节数,这两个参数的类型都是size_t。该函数也不知道数组元素的类型,所以所分配区域的地址返回为void *类型。

下面的语句使用calloc()为包含75个int元素的数组分配内存:

int *pNumber = (int *) calloc(75, sizeof(int));

如果不能分配所请求的内存,返回值就是NULL,也可以检查分配内存的结果,这非常类似于malloc(),但calloc()分配的内存区域都会初始化为0。

将程序7.11改为使用calloc()代替malloc()来分配需要的内存,只需修改一条语句,如下面的粗体显示,其他代码不变:

/* Allocate sufficient memory to store the number of primes required */
primes = (unsigned long *)calloc(total, sizeof(unsigned long));
if (primes == NULL)
{
printf("/nNot enough memory. Hasta la Vista, baby./n");
return 1;
}
原创粉丝点击