内存分配设计思想:我们设置动态内存分配的初衷在于:有些单片机系统内存资源比较少,便显得特别珍贵,因此我们要实现内存的反复利用,好像就像一个池子一样,我们要循环利用池子里的水资源。比如说洗澡时,如果是喷头式的,这样如果不去回收水便会浪费;而如果是在澡池子里洗澡,每次利用完水后,水资源便会重新回到池子,可循环的利用起来。我们设置动态内存分配也是这个原理,使用之前先去申请,使用结束后便释放,下次便可继续申请该内存,循环利用内存池里的资源。我们先定义6个数组,各个数组大小为XXX_SIZE * XXX_COUNT,XXX_SIZE是每个内存块大小,XXX_COUNT是内存块的个数。将各数组的首地址赋给g_mem_mngt[i].buf(i:0-5)m_mngt[i].buf便分别指向每个数组的首地址。我们申请某一长度 len的内存时,通过计算选定匹配的内存块大小,然后从对应内存池首地址去查找空闲的内存块,找到即停止查找,将该内存块起始地址取出便为我们申请到的内存块,申请到后将该地址标记,表示已被占用,下次不能再申请到。释放内存,首先根据内存节点所在的起始地址与各个内存池起始地址和结束地址,判断内存节点所有所在的内存池,然后从该内存池首地址开始查找,定位该内存落在的内存块控制区域,找到后则停止查找,并将该内存块标记位清零,表示该内存块已空闲,下次可申请使用。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !