calloc和malloc使用
时间: 2023-08-20 14:09:30 浏览: 108
calloc和malloc都是用于动态分配内存的函数。它们的使用方法略有不同。
calloc函数的使用方法如下:
```c
int* p = (int*)calloc(10,sizeof(int));
```
这段代码将分配一个可以存储10个int类型数据的内存空间,并将该空间的每个字节都初始化为0。如果分配失败,p将为NULL。
malloc函数的使用方法如下:
```c
int* p = (int*)malloc(40);
```
这段代码将分配一个可以存储40个字节的内存空间,但不会对该空间进行初始化。如果分配失败,p将为NULL。
在使用完内存后,我们应该及时释放它们以避免内存泄漏。使用free函数可以释放动态分配的内存,如下所示:
```c
free(p);
p = NULL;
```
这段代码将释放p指向的内存,并将p设置为NULL,以避免出现悬空指针。
需要注意的是,realloc函数可以用于重新分配已经分配的内存空间的大小。它的使用方法如下:
```c
int* ptr = (int*)realloc(p, 80);
if (ptr != NULL) {
p = ptr;
}
```
这段代码将尝试将p指向的内存空间重新分配为可以存储80个字节的大小。如果分配成功,ptr将指向新的内存空间,我们可以将p指向它。如果分配失败,ptr将为NULL,此时p仍指向原来的内存空间。
综上所述,calloc和malloc都是用于动态分配内存的函数,但calloc会将分配的内存空间初始化为0,而malloc不会。在使用完内存后,我们应该使用free函数释放它们。realloc函数可以用于重新分配已经分配的内存空间的大小。
#### 引用[.reference_title]
- *1* *2* *3* [C语言中常见的动态内存申请函数(malloc、calloc、realloc)](https://blog.csdn.net/m0_70811813/article/details/127029882)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文