手机
当前位置:查字典教程网 >编程开发 >C语言 >C语言中堆空间的生成与释放详解
C语言中堆空间的生成与释放详解
摘要:堆空间的分配和释放#includemalloc、calloc、realloc、freemallocvoid*malloc(size_tsiz...

堆空间的分配和释放

#include <stdlib.h>

malloc、calloc、realloc、free

malloc

void *malloc(size_t size);

功能:在堆中分配 size 字节的连续空间

参数:size_字节数

返回值:成功返回分配空间的首地址,失败返回 NULL

free

void free(void *ptr);

功能:释放由 malloc、calloc、realloc 分配的空间

参数:ptr_空间的首地址

返回值:无

注意:

1、每个空间只能释放一次

2、ptr 必须是分配空间的首地址

calloc

void *calloc(size_t nmemb, size_t size);

功能:在堆中分配 nmemb 块大小为 size 字节的连续空间

参数:nmemb_数据块数 size_每块大小

返回值:成功返回分配空间的首地址,失败返回 NULL

注意:calloc 会把空间内容置 0,而 malloc 不会

realloc

void *realloc(void *ptr, size_t size);

功能:在 malloc、calloc、realloc 分配的 ptr 开始空间,重新分配为 size 字节大小

参数:ptr_malloc、calloc、realloc 分配空间首地址 size_总大小

返回值:成功返回分配空间的首地址 失败返回 NULL

注意:

1、如果 size 小于原空间大小,不会起作用

2、新增加的空间不会置 0

3、如果 ptr 为 NULL,相当于 malloc(size)

4、如果 ptr 不为 NULL 并且 size == 0,相当于 free(ptr)

5、ptr 不需要释放,如果分配成功,只释放重新分配空间的首地址

【C语言中堆空间的生成与释放详解】相关文章:

基于C语言EOF与getchar()的使用详解

基于C语言string函数的详解

浅析C语言中sscanf 的用法

C语言中多维数组的内存分配和释放(malloc与free)的方法

C语言中字符串和数字的相互转换实现代码

C++中sprintf()函数的使用详解

C语言中打印特殊图案的实现代码

浅析C语言字中的符串格式化显示

C语言中函数与指针的应用总结

内部排序之堆排序的实现详解

精品推荐
分类导航