C语言中堆空间的生成与释放详解
所属分类:
软件编程 / C 语言
阅读数:
57
收藏 0赞 0分享
堆空间的分配和释放
#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 不需要释放,如果分配成功,只释放重新分配空间的首地址
visual studio 2019编译c++17的方法
这篇文章主要介绍了visual studio 2019编译c++17的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0赞 0分享
C语言实现加密解密功能
这篇文章主要为大家详细介绍了C语言实现加密解密功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0赞 0分享
C++实现猴子吃桃的示例代码
这篇文章主要介绍了C++实现猴子吃桃的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0赞 0分享
C语言实现关机小程序
这篇文章主要为大家详细介绍了C语言实现关机小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0赞 0分享
查看更多