




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验七 内存块的申请与释放实验目的1. 掌握内存动态分区的实现方法2. 进一步掌握内存块的分配策略3. 掌握内存块申请与释放的算法与实现实验内容 本次实验是模拟实现内存的动态分区的分配算法。假设内存的大小为100KB。 分别使用首次适应算法,最佳适合算法去分配和释放内存空间,并显示内存的分配情况。要求:i) 在读完程序后,将函数FirstFit_new()补充完整,写在实验报告上;ii) 运行程序,将测试结果写在实验报告上。程序/*- 进入程序后可以根据菜单选项进入不同的模块 1.使用首次适应算法分配空间 2.使用最佳适应算法分配空间 3.释放一块空间 4.显示内存分配情况 5.退出系统-*/#include #include #include #include #define MEMSIZE 100 /*定义内存大小为100*/#define MINSIZE 2 /*如果小于此值 将不再分割内存*/typedef struct _MemoryInfomation/* 内存空间分区表 结构*/ int start; /*起始地址*/ int size; /*大小*/ char info; /*状态 F:空闲(Free) U:占用(Used) E 结束(end)*/MEMINFO;MEMINFO MemListMEMSIZE; /内存空间信息表void Display();/*-函数名:InitALL()功 能:初始化所有变量-*/void InitAll() int i; MEMINFO temp=0,0,e; for(i=0;iMEMSIZE;i+) /初始化空间信息表 MemListi=temp; MemList0.start=0; /起始地址为0 MemList0.size=MEMSIZE;/空间初始为最大的 MemL=f; /状态为空闲/*-函数名:FirstFit_new()功 能:首次适应算法分配内存-*/void FirstFit_new() int i,j,size; char temp10; printf(FirstFit_new:How many MEMORY requir?); gets(temp); size=atoi(temp); /将字符串转化为整数 for(i=0; i = size & MemL=f) /满足所需要的大小,且是空闲空间 if(MemListi.size - size i; j-) /将i后的信息表元素后移 MemListj+1=MemListj; /将i分成两部分,使用低地址部分 MemListi+1.start= MemListi.start+size; MemListi+1.size = MemListi.size-size; MemListi+1.info=f; MemListi.size=size; MemL=u; break; if(i = MEMSIZE-1 | MemL=e) /没有找到符合分配的空间 printf(Not Enough Memory!n); getchar(); Display();/*-函数名:BestFit_new()功 能:最佳适应算法分配内存-*/void BestFit_new() int i,j,k,flag,size; char temp10; printf(BestFit_new How many MEMORY requir?); gets(temp); size=atoi(temp); /将字符串转化为整数 j=0; flag=0; /标志是否有合适的空间分配,0无,1有 k=MEMSIZE; /用来保存满足要求的最小空间 for(i=0;i= size & MemL = f) /符合要求 flag=1; if(MemListi.size k) /比符合要求的最小空间小,则交换 k=MemListi.size; j=i; i=j; if(flag = 0) /没找到 printf(Not Enough Memory!n); getch(); j=i; else if(MemListi.size - size i; j-) /后移 MemListj+1=MemListj; MemListi+1.start=MemListi.start+size; MemListi+1.size=MemListi.size-size; MemListi+1.info=f; MemListi.size=size; MemL=u; Display();/*- 最坏适应算法*/void BadFit_new() int i,j,k,flag,size; char temp10; printf(BadFit_new How many MEMORY requir?); gets(temp); size=atoi(temp); j=0; flag=0; k=0; /保存满足要求的最大空间 for(i=0;i=size&MemL=f) flag=1; if(MemListi.sizek) k=MemListi.size; j=i; i=j; if(flag=0) printf(Not Enough Memory!n); getch(); j=i; else if(MemListi.size-sizei;j-) MemListj+1=MemListj; MemListi+1.start=MemListi.start+size; MemListi+1.size=MemListi.size-size; MemListi+1.info=f; MemListi.size=size; MemL=u; Display();/*-函数名:del()功 能:释放一块内存-*/void del() int i,number; char temp10; printf(nplease input the NUMBER you want stop:); gets(temp); number=atoi(temp); if(MemL = u) /输入的空间是使用的 MemL = f; /标志为空闲 if(MemListnumber+1.info = f) /右空间为空则合并 MemListnumber.size+=MemListnumber+1.size; /大小合并 for(i=number+1;i 0) MemListi=MemListi+1; if(number 0 & MemL=f) /左空间空闲则合并 MemListnumber-1.size+=MemListnumber.size; for(i=number;iMEMSIZE-1&MemL!=e;i+) MemListi=MemListi+1; else printf(Thist Number is Not exist or is Not used!n ); getchar(); Display();/*-函数名:Display()功 能:显示内存状态-*/void Display() int i, used=0; /记录可以使用的总空间量 /* clrscr();*/ printf(n-n); printf(%5s%15s%15s,Number,start,size,Info); printf(n-n); for(i=0;i MEMSIZE & MemL != e;i+) if(MemL = u) used+=MemListi.size; printf(%5d%15d%15d%15sn,i,MemListi.start,MemListi.size,MemL=u?USED:FREE); printf(n-n); printf(Totalsize:%-10d Used:%-10d Free:%-10dn,MEMSIZE,used,MEMSIZE-used); printf(nn Press Any Key to return.); getch();/*-函数名:main()功 能:主函数-*/void main() char ch; InitAll(); while(1)printf(n); printf(=n); printf( 1.Get a block use the FISTFIT methodn); printf( 2.Get a block use the BESTFIT methodn); printf( 3.Get a block use the BadFIT methodn); printf( 4.Free a blockn); printf( 5.Display Mem info n); printf( 6.Exit n); printf(=n); ch=getch(); sw
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 励志之星活动策划与执行方案
- 语文情境教学课件初中
- 消防安全标识培训课件
- 2025至2030中国养老行业产业运行态势及投资规划深度研究报告
- 儿科危重症护理病案分享
- 缺陷管理员工手册
- 消防安全教育培训资料课件
- 2025至2030中国磷酸盐转化膜行业发展趋势分析与未来投资战略咨询研究报告
- 离婚协议签订但未办理手续期间的共同财产分割合同
- 创新型离婚股份分割与共同财产清算及分割合同
- 纪念九·一八:致敬那场永不妥协的抗争-主题班会课件
- 铂耐药复发性卵巢癌诊治中国专家共识(2025年版)解读课件
- 《人工智能基础与应用-(AIGC实战 慕课版)》全套教学课件
- 2025年护士执业资格考试题库(社区护理学专项)-社区护理护理法律法规试题
- 第一单元 从感知到物联 第2课传感之古今未来 教学设计2024-2025学年 人教版新教材 初中信息技术八年级上册
- 2024年同等学力申硕《英语》试题真题及答案
- 胃疡病中医护理查房
- 水泥电杆行业分析报告
- 一年级道德与法治上册第1课我是小学生啦课件省公开课一等奖新课获奖课件
- 煤矿安全监控系统培训课件
- 2024外墙喷涂机器人
评论
0/150
提交评论