calloc在c语言中的用法(附带实例)
在内存的全局存储空间中,用于程序动态分配和释放的内存块称为自由存储空间,通常也称为堆。
在 C语言程序中,可以使用 calloc() 函数来从堆中动态地分配和释放内存。
calloc() 函数位于
calloc() 函数会返回一个指针,该指针指向动态分配的内存空间数组的地址,当分配内存空间出错时,返回空指针。
例如,使用该函数分配一个整型内存空间数组,代码如下:
calloc() 函数成功分配内存空间后会返回一个指针,因为分配的是 int 型的内存空间,所以返回的指针也应该是相对应的 int 型指针,这样就要进行强制类型转换。最后将返回的指针赋给 pArray 指针变量,pArray 指向的就是该数组的首地址。
【实例】动态分配一个内存空间数组。使用 strcpy() 函数为字符数组赋值,再进行输出,验证分配内存空间以正确保存数据。
在 C语言程序中,可以使用 calloc() 函数来从堆中动态地分配和释放内存。
calloc() 函数位于
<stdlib.h>
头文件中,它的原型如下:
void *calloc(unsigned n, unsigned size);该函数的功能是在内存中动态分配 n 个长度为 size 的连续内存空间数组。
calloc() 函数会返回一个指针,该指针指向动态分配的内存空间数组的地址,当分配内存空间出错时,返回空指针。
例如,使用该函数分配一个整型内存空间数组,代码如下:
int* pArray; /*定义指针*/ pArray=(int*)calloc(3,sizeof(int)); /*分配整型内存空间数组*/上面代码中的 pArray 为一个整型指针,使用 calloc() 函数分配内存空间数组,第一个参数表示分配数组中元素的个数,而第二个参数表示元素的类型。
calloc() 函数成功分配内存空间后会返回一个指针,因为分配的是 int 型的内存空间,所以返回的指针也应该是相对应的 int 型指针,这样就要进行强制类型转换。最后将返回的指针赋给 pArray 指针变量,pArray 指向的就是该数组的首地址。
【实例】动态分配一个内存空间数组。使用 strcpy() 函数为字符数组赋值,再进行输出,验证分配内存空间以正确保存数据。
#define _CRT_SECURE_NO_WARNINGS /*解除vs安全性检测问题*/ #include <stdlib.h> /*包含头文件*/ #include<stdio.h> #include<string.h> int main() /*主函数main()*/ { char* ch; /*定义指针*/ ch = (char*)calloc(30, sizeof(char)); /*分配变量*/ strcpy(ch, "https://c.biancheng.net"); /*将字符串进行复制*/ printf("%s\n", ch); /*输出字符串*/ free(ch); /*释放空间*/ return 0; /*程序结束*/ }运行程序,结果为:
https://c.biancheng.net
注意,使用 calloc() 函数分配的内存空间是在堆中,而不是在栈中。因此在使用完这块内存空间之后一定要将其释放掉,释放内存空间使用的是 free() 函数。