calloc malloc用法
时间: 2023-11-25 07:07:20 浏览: 60
calloc和malloc都是C语言中动态内存分配的函数,用于在程序运行时动态申请内存空间。它们的用法如下:
1. malloc函数
malloc函数用于动态分配内存空间,其原型如下:
```
void *malloc(size_t size);
```
参数size为要申请的内存空间大小,单位为字节。该函数返回值为void类型的指针,指向申请的内存空间的起始地址。如果申请失败,则返回NULL。
例如,申请一个大小为10个int类型的内存空间:
```
int *p = (int*)malloc(10*sizeof(int));
```
2. calloc函数
calloc函数也用于动态分配内存空间,其原型如下:
```
void *calloc(size_t num, size_t size);
```
参数num为要申请的内存块的个数,size为每个内存块的大小,单位均为字节。该函数返回值为void类型的指针,指向申请的内存空间的起始地址。如果申请失败,则返回NULL。
例如,申请一个大小为10个int类型的内存空间:
```
int *p = (int*)calloc(10, sizeof(int));
```
与malloc函数不同的是,calloc函数会在申请的内存空间中将所有的位都初始化为0。而malloc函数则不会对申请的内存空间进行初始化,申请到的内存空间中的值是未知的。
3. 释放内存空间
在使用完动态申请的内存空间后,应该及时将其释放,以免造成内存泄漏。释放内存空间的函数是free,其原型如下:
```
void free(void *ptr);
```
参数ptr为要释放的内存空间的首地址。例如,释放之前申请的内存空间:
```
free(p);
```
需要注意的是,释放的内存空间必须是通过malloc或calloc函数动态申请得到的,否则会引起不可预料的错误。同时,同一块内存空间只能被释放一次,重复释放同一块内存空间也会引起错误。
阅读全文