动态内存管理

动态内存管理

动态内存管理指的就是在程序运行过程中,更灵活的进行内存的申请和释放。
1.创建变量就是一种简单的内存管理
变量分为:局部变量(出了当前代码块就释放了)
全局变量(程序运行结束时释放)
静态变量即static(程序运行结束释放)
但是创建变量这种内存管理的方式毕竟太过于死板,程序运行结束释放内存可能会导致我们的内存使用效率过低。所以我们需要一种能随时需要就申请不需要就释放的方法。
2.C语言中具体的内存申请和释放操作涉及到四个函数
<1>malloc函数
 可以fuw
malloc可以负责帮我们申请到一段连续的内存空间。
如果内存申请成功,返回这段内存的初始地址,若申请失败,返回NULL。
注意:malloc使用完成后我们一定要检验函数的返回值,确保内存申请成功。
malloc申请到的内存如果不手动释放,就会一直存在,直到程序结束。
<2>free函数
专门用于释放我们通过动态申请到的内存。
因此与我们的malloc函数,calloc函数,realloc函数搭配使用。
 函数的参数为我们动态申请到的内存的首地址
函数的参数为我们动态申请到的内存的首地址
如果我们动态申请到的内存忘记释放,最终可能会导致内存泄漏。
<3>calloc函数
calloc函数与malloc函数的区别在于申请到的内存被初始化为全0,而malloc函数申请到的内存中为一些残留数据。
但是在实际开发中我们大多数情况下是初始化为全0是不合理的。
在这里插入图片描述
申请到的内存大小为num×size
<4>realloc函数
realloc函数的作用是针对malloc函数和calloc函数动态申请到的内存进行扩容。
realloc函数之后的内存空间仍然是连续的内存。
在这里插入图片描述
第一个参数为动态申请到的内存的地址,第二个参数为扩容后的内存大小。
realloc函数扩容有两种情况:
1,如果当前的内存后面的空闲内存空间足够容纳扩容后的结果,,就直接扩容。
2,如果当前内存后面的空闲空间不够容纳扩容后的结果时,此时就需要另外找一个更大的连续空间,把原来内存的数据拷贝过去,返回新的空间的地址,并释放旧的内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值