calloc 函数

更多Linux内核驱动开发教程,《Linux内核编程》1~12期,请点击:王利涛老师个人淘宝店:Linux内核编程

calloc函数的作用和malloc一样,也是在动态堆区申请一块内存,calloc函数的原型如下:

void* calloc(unsigned int num,unsigned int size);

有2个参数,表示在内存的动态存储区中分配num个长度为size的连续空间。其中,num为对象的个数,size为每一个申请的对象的单位大小。

与malloc不同的是,calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不做初始化,分配到的空间中的数据是随机数据。

calloc的返回值是一个通用指针:void *,不需要强制类型转换,可以直接转换成各种类型的指针:

int *p = calloc(10, 4);
char *p = calloc(10, 1);
short int *p = calloc(10, 2);

释放calloc申请的内存,也是使用free函数,calloc/free函数的使用示例如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    int *p = calloc(10, sizeof(int));
    if (p == NULL)
        printf("calloc failed!\n";
    else
    {
        int i;
        for (i = 0; i < 10; i++)
        {
            *(p + i) = i;
            printf("%d ", *(p + i));
        }
    }

    free(p);
    p = NULL;

    return 0;
}
驱动开发核心理论,Linux内核开发入门实战视频教程:《Linux内核编程》,具有一线芯片原厂开发经验的驱动工程师录制,详情点击:王利涛老师个人淘宝店:Linux内核编程