《C/C++学习指南》语法篇—笔记 (九、动态分配内存--malloc_free)

《C/C++学习指南》语法篇—笔记 (九、动态分配内存--malloc_free

问题:数组一块连续内存,长度常量)必须在代码里固定。

内存管理器 MM

MM,Memory Manager :系统中存在一个内存管理器,负责管理一堆闲置的内存。
MM提供服务:应用程序可以想MM申请(借出)一块指定大小的内存,用完之后再释放(还回)。

void* ptr = malloc(1024); //申请,从MM借出内存
free(ptr);  //释放,还回MM

注:

  • MM是个系统级的东西,所有的应用程序都向同一个MM申请内存。
  • 借出:在内存被借出时,MM只是把它管理的内存标记首地址,长度)了一下,表示该段内存已被占用。
  • 只要malloc,MM都会借出,不手动free,MM不会要求free,所以用户程序应自觉及时free。
非常重要:堆 (MM管理的内存区域)

MM管理的内存区域称为“”,Heap,相当于一个仓库。当应用程序要malloc时,就从仓库里登记借出。当free时,就将这一块内存放回仓库。

malloc函数
void* malloc(int size)
 $ 参数size:指定要申请的内存空间的大小
 $ 返回值:void* ,指向这一块内存地址 

MM不管你拿这块内存储存何种数据,所以返回void*,在使用malloc时,要把返回值转换成目标类型。如要申请一块空间存放100个int型对象,则↓,这块内存和数组没有本质区别,用法完全相同,数组本质就是一块连续内存。

int size = 100*sizeof(int);
int* p = (int*)malloc(size);
free函数
void free(void* ptr)
 $ ptr:先前malloc返回的内存地址
 $ 返回值:void* ,指向这一块内存地址
注:
  • 不是malloc的指针,不可以free
  • malloc的内存必须及时free
  • free必须free首地址
  • malloc的返回值需要检测 是不是返回NULL,没有内存了返回NULL。
  • free之后,该指针不能使用
  • malloc得到的内存可以在任意位置释放
特点

C/C++特点,使用指针直接操作内存。灵活高效但是主要逻辑缜密,不然容易崩溃

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值