
calloc函数是C语言中的一种动态内存分配函数,用于在内存中动态分配一段连续的内存空间。该函数可以解决静态内存分配无法满足的动态内存分配需求。
calloc函数的用法:
``` C
void *calloc(size_t nitems, size_t size);
```
参数说明:
- nitems:需要分配空间的元素个数;
- size:每个元素的大小。
返回值:函数成功时返回指向已分配内存的指针,如果函数失败则返回NULL。
calloc函数常见的使用方法:
1. 分配一维数组
可以使用calloc函数分配一维数组:
``` C
int *p;
p = (int *)calloc(10, sizeof(int));
```
上述代码将会分配10个int类型的元素,每个元素的大小为sizeof(int),即4个字节。函数成功时会返回一个指针p,该指针指向分配的内存的第一个字节。
2. 分配二维数组
可以使用calloc函数分配二维数组:
``` C
int **p;
int i;
p = (int **)calloc(3, sizeof(int *));
for (i = 0; i < 3; i++) {
p[i] = (int *)calloc(4, sizeof(int));
}
```
上述代码将会分配一个3行4列的int类型的二维数组。首先使用calloc函数分配了一个指针类型的数组p,数组中有3个元素(即3行),每个元素的大小为sizeof(int *)。然后再循环中,对于每个元素p[i],再使用calloc函数分配一个int类型的数组,大小为4个元素(即4列)。
3. 分配结构体数组
可以使用calloc函数分配结构体数组:
``` C
struct student {
int id;
char name;
int score;
};
struct student *s;
s = (struct student *)calloc(5, sizeof(struct student));
```
上述代码将会分配一个5个元素的结构体数组,每个元素的大小为sizeof(struct student)。
需要注意的是,使用calloc函数分配的内存需要手动释放,否则会造成内存泄漏。可以使用free函数来释放内存:
``` C
free(p);
```
