C语言的动态内存分配

24 篇文章 1 订阅
17 篇文章 0 订阅

二.动态内存分配

(1)概念

之前所有的内存都是由系统管理,如果希望更加灵活得管理使用的内存,可以使用动态分配的内存

动态分配的内存由程序员自己管理,自己申请,自己释放

如果没有释放申请的内存就会造成内存泄漏

动态申请的内存在内存中的段落是在堆区

(2)使用

使用动态内存需要一组标准函数,为了使用这些标准函数需要包含stdlib.h头文件

malloc函数可以动态分配连续多个字节的内存空间

参数是希望分配内存的长度(单位是字节)

返回值就是分配的内存的首地址,如果分配失败返回NULL指针

该函数一定要判断返回值

返回指针是void *类型,需要强转后才能使用

malloc函数分配的内存没有初始化

free函数用来释放动态分配的内存

参数就是要释放内存的首地址

free函数不需要知道释放内存的大小

注:一段内存只能释放一次,多次释放会发生严重错误

分配的内存必须释放,如果不释放会造成内存泄漏

注:程序结束后本程序使用的所有内存全部释放

calloc函数可以动态分配连续多个字节的内存空间

calloc函数第一个参数是分配内存单元个数,第二个参数是单个内存单元的大小

calloc分配的内存会被初始化为0

realloc函数用来调整一段已分配空间的大小

第一个参数是要调整的内存首地址(给NULL相当于malloc)

第二个参数是要调整成的大小(给0相当于free)

返回调整后内存的首地址

练习:

由用户输入数字个数和所有数字,计算所有数字的和(使用动态内存)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值