堆空间的分配和释放
#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语言中堆空间的生成与释放详解
2020-12-22 15:49C语言教程网 C/C++
以下是对C语言中堆空间的生成与释放进行了详细的分析介绍,需要的朋友可以过来参考下
延伸 · 阅读
- 2022-03-11C语言练习之数组中素数交换
- 2022-03-11C语言实现将double/float 转为字符串(带自定义精度
- 2022-03-11c语言单词本的新增、删除、查询按顺序显示功能
- 2022-03-11C语言实现自动发牌程序代码
- 2022-03-11C语言中单目操作符++、–的实例讲解
- 2022-03-11C语言中数据在内存如何存储
- C/C++
深入分析C++中deque的使用
本篇文章介绍了,深入分析C++中deque的使用。需要的朋友参考下...
- C/C++
浅谈防不胜防的unsigned int的运算
下面小编就为大家带来一篇浅谈防不胜防的unsigned int的运算。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...
- C/C++
C++输入一个字符串,把其中的字符按照逆序输出的两种方法解析
以下是对C++中输入一个字符串,把其中的字符按照逆序输出的两种方法进行了详细的分析介绍,需要的朋友可以过来参考下...
- C/C++
Opencv绘制最小外接矩形、最小外接圆
这篇文章主要为大家详细介绍了Opencv绘制最小外接矩形、最小外接圆的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以...
- C/C++
构造函数不能声明为虚函数的原因及分析
构造函数不需要是虚函数,也不允许是虚函数,因为创建一个对象时我们总是要明确指定对象的类型,尽管我们可能通过实验室的基类的指针或引用去访问...
- C/C++
Visual Studio C++指针靠前靠后的问题全面解析
这篇文章主要介绍了Visual Studio C++指针靠前靠后的问题全面解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可...
- C/C++
C语言实现随机抽奖程序
这篇文章主要为大家详细介绍了C语言实现随机抽奖程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...
- C/C++
如何用C语言、Python实现栈及典型应用
本文先通过实例分别介绍了如何用C语言、Python实现栈,后又介绍栈的典型应用,对大家学习栈很有借鉴参考价值,下面一起来看看吧。...