实验7 内存块的申请与释放.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验7 内存块的申请与释放

实验七 内存块的申请与释放 ??? [实验目的] 1. 掌握内存动态分区的实现方法 2. 进一步掌握内存块的分配策略 3. 掌握内存块申请与释放的算法与实现 [实验内容] 本次实验是模拟实现内存的动态分区的分配算法。假设内存的大小为100KB。 分别使用首次适应算法,最佳适合算法去分配和释放内存空间,并显示内存的分配情况。 要求: i) 在读完程序后,将函数FirstFit_new()补充完整,写在实验报告上; ii) 运行程序,将测试结果写在实验报告上。 [程序] /**------------------------------------------------------ 进入程序后可以根据菜单选项进入不同的模块 1.使用首次适应算法分配空间 2.使用最佳适应算法分配空间 3.释放一块空间 4.显示内存分配情况 5.退出系统 ----------------------------------------------------------**/ #include stdio.h #include stdlib.h #include string.h #include conio.h #define MEMSIZE 100 /*定义内存大小为100*/ #define MINSIZE 2 /*如果小于此值 将不再分割内存*/ typedef struct _MemoryInfomation{/* 内存空间分区表 结构*/ int start; /*起始地址*/ int size; /*大小*/ char info; /*状态 F:空闲(Free) U:占用(Used) E 结束(end)*/ }MEMINFO; MEMINFO MemList[MEMSIZE]; //内存空间信息表 void Display(); /*-------------------------------------------------------- 函数名:InitALL() 功 能:初始化所有变量 --------------------------------------------------------*/ void InitAll(){ int i; MEMINFO temp={0,0,e}; for(i=0;iMEMSIZE;i++) //初始化空间信息表 MemList[i]=temp; MemList[0].start=0; //起始地址为0 MemList[0].size=MEMSIZE;//空间初始为最大的 MemList[0].info=f; //状态为空闲 } /*-------------------------------------------------------- 函数名:FirstFit_new() 功 能:首次适应算法分配内存 --------------------------------------------------------*/ void FirstFit_new(){ int i,j,size; char temp[10]; printf(FirstFit_new:How many MEMORY requir?); gets(temp); size=atoi(temp); //将字符串转化为整数 for(i=0; i MEMSIZE-1 MemList[i].info != e;i++) //到了空间尾且没有空间分配 { if(MemList[i].size = size MemList[i].info==f) //满足所需要的大小,且是空闲空间 { if(MemList[i].size - size = MINSIZE) //如果小于规定的最小差则将整个空间分配出去 MemList[i].info=u; //标志为使用 else { for(j = MEMSIZE-2; j i; j--) //将i后的信息表元素后移 { MemList[j+1]=MemList[j]; } //将i分成两部分,使用低地址部分 MemList[i+1].start= MemList[i].start+size; MemList[i+1].size = MemList[i].size-size; MemList[i+1].in

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档