calloc

calloc

C语言ISOC函数名
calloc是一个ISOC函数函数名。在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL。
    中文名:calloc 外文名:clear allocation 适用领域: 所属学科: 函数原型:void*calloc 功能:动态存储中分配n为size连续空间 头文件:stdlib.h或malloc.h 相关函数:malloc、realloc、free_alloca 领域:编程

性质

一般使用后要使用free(起始地址指针)对内存进行释放,不然内存申请过多会影响计算机的性能,以至于得重启电脑。如果使用过后不清零,还可以使用指针对该块内存进行访问。

与malloc和realloc函数的区别

三者都是分配内存,都是stdlib.h库里的函数,但是也存在一些差异。

(1)malloc函数。其原型void*malloc(unsigned int num_bytes);

num_byte为要申请的空间大小,需要我们手动的去计算,如int *p=(int *)malloc(20*sizeof(int)),如果编译器默认int为4字节存储的话,那么计算结果是80Byte,一次申请一个80Byte的连续空间,并将空间基地址强制转换为int类型,赋值给指针p,此时申请的内存值是不确定的。

calloc()在动态分配完内存后,自动初始化该内存空间为零,而malloc()不初始化,里边数据是未知的垃圾数据。

(2)calloc函数,其原型void*calloc(size_t n, size_t size);

其比malloc函数多一个参数,并不需要人为的计算空间的大小,比如如果他要申请20个int类型空间,会int *p=(int *)calloc(20,sizeof(int)),这样就省去了人为空间计算的麻烦。但这并不是他们之间最重要的区别,malloc申请后空间的值是随机的,并没有进行初始化,而calloc却在申请后,对空间逐一进行初始化,并设置值为0;

3)realloc函数和上面两个有本质的区别,其原型void realloc(void *ptr,size_t new_Size)

用于对动态内存进行扩容(及已申请的动态空间不够使用,需要进行空间扩容操作),ptr为指向原来空间基址的指针,new_size为接下来需要扩充容量的大小。

相关词条

相关搜索

其它词条