calloc malloc
时间: 2023-11-25 10:08:46 浏览: 83
在C语言中,`malloc`和`calloc`都是用来动态分配内存的函数,它们的区别如下:
1. 参数不同:`malloc`只有一个参数,即需要分配的内存大小,而`calloc`有两个参数,第一个参数是需要分配的内存块数,第二个参数是每个内存块的大小。
2. 功能不同:`calloc`会将分配到的内存空间初始化为0,而`malloc`不会。
下面是`malloc`和`calloc`的使用示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
// 使用malloc分配10个int类型的内存空间
int *p1 = (int*)malloc(10 * sizeof(int));
if (p1 == NULL) {
printf("malloc failed\n");
return -1;
}
// 使用calloc分配10个int类型的内存空间,并初始化为0
int *p2 = (int*)calloc(10, sizeof(int));
if (p2 == NULL) {
printf("calloc failed\n");
return -1;
}
// 释放内存空间
free(p1);
free(p2);
return 0;
}
```
除了`malloc`和`calloc`之外,还有一个函数`realloc`,它可以重新分配已经分配过的内存空间。`realloc`的使用示例如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
// 使用malloc分配10个int类型的内存空间
int *p = (int*)malloc(10 * sizeof(int));
if (p == NULL) {
printf("malloc failed\n");
return -1;
}
// 使用realloc重新分配内存空间,将原来的10个int类型的内存空间扩展为20个int类型的内存空间
int *q = (int*)realloc(p, 20 * sizeof(int));
if (q == NULL) {
printf("realloc failed\n");
return -1;
}
// 释放内存空间
free(q);
return 0;
}
```
阅读全文