当前文件内部存储文件能删除吗在iCl0ud需要先下载才能拷贝是什么意思

走到今天已经开始涉及到计算機核心一点的东西了---内存管理。通过本实验的学习能够较为深刻体会到“指针是c语言的灵魂”这句话的分量。自然对c语言的能力要求就高很多了

      最近有点乱,但是有关嵌入式系统的学习不曾怠慢过本文是基于原子老师的c源码,自己的学习的心得只是对源码作出自己嘚学习理解,同时也插补了一些涉及到的c语言知识贴出本文不为别的,一来但愿能有有缘人看到本文提出指正;二来,为了那些不眠嘚夜安慰一下自己。

   图解:从上图可以看出分块式内存管理由内存池和内存管理表两部分组成。内存池被等分为n块对应的内存管理表,大小也为n内存管理表的每一个项对应内存池的一块内存。
   内存管理表的项值代表的意义为:当该项值为0的时候代表对应的内存块未被占用,当该项值非零的时候代表该项对应的内存块已经被占用,其数值则代表被连续占用的内存块数比如某项值为10,那么说明包括本项对应的内存块在内总共分配了10个内存块给外部的某个指针。
内寸分配方向如图所示是从顶à底的分配方向。即首先从最末端开始找空内存。当内存管理刚初始化的时候内存表全部清零,表示没有任何内存块被占用

当指针p调用malloc申请内存的时候,先判断p要分配的内存块数(m)然后从第n项开始,向下查找直到找到m块连续的空内存块(即对应内存管理表项为0),然后将这m个内存管理表项的值都设置為m(标记被用)最后,把最后的这个空内存块的地址返回指针p完成一次分配。注意如果当内存不够的时候(找到最后也没找到连续嘚m块空闲内存),则返回NULL(空指针)给p表示分配失败。

   当p申请的内存用完需要释放的时候,调用free函数实现free函数先判断p指向的内存地址所对应的内存块,然后找到对应的内存管理表项目得到p所占用的内存块数目m(内存管理表项目的值就是所分配内存块的数目),将这m個内存管理表项目的值都清零标记释放,完成一次内存释放
关于分块式内存管理的原理,我们就介绍到这里

本章实验功能简介:开機后,显示提示信息等待外部输入。KEY0用于申请内存每次申请2K字节内存。KEY1用于写数据到申请到的内存里面KEY2用于释放内存。WK_UP用于切换操莋内存区(内部内存/外部内存)DS0用于指示程序运行状态。本章我们还可以通过USMART调试测试内存管理函数。
本实验用到的硬件资源有:

设置Internet》安全》自定义级别》下载項》文件下载勾选启用即可。

我要回帖

更多关于 内部存储文件能删除吗 的文章

 

随机推荐