C语言中堆空间的生成与释放详解
C语言中堆空间的生成与释放详解
发布时间:2016-12-28 来源:查字典编辑
摘要:堆空间的分配和释放#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语言学习
编程开发子分类