欢迎来到天天文库
浏览记录
ID:7782727
大小:31.50 KB
页数:4页
时间:2018-02-25
《实验三可变分区内存管理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、#include#include#include#include#includeusingnamespacestd;typedefstructnode{intID;//分区IDstructnode*next;//指向下个分区的指针floatbeginAddress;//分区起始地址floatlength;//分区长度intZY;//分区是否被占用,1被占用,0未被占用}FQ;FQ*First=(FQ*)malloc(sizeof(FQ));//链表的头指针intFQCount=0;//分区的个数
2、voiddisplay();//显示内存状态voidFenPei(floatlen);//主存分配函数voidHuiShou(intid);//主存回收函数intmaxID=0;intmain(){//初始化内存分区状态fstreamfile;file.open("input.txt",ios_base::in
3、ios_base::out
4、ios_base::app);strings0;getline(file,s0);istringstreamsin(s0);sin>>FQCount;FQ*temp=(FQ*)malloc(sizeof(FQ));//当前指针temp=First
5、;for(strings;getline(file,s);){FQ*fq=(FQ*)malloc(sizeof(FQ));istringstreamsin(s);sin>>fq->beginAddress;sin>>fq->length;sin>>fq->ZY;fq->ID=++maxID;fq->next=NULL;temp->next=fq;temp=fq;}cout<<"最初的内存分配状态:"<>choice;if
6、(choice==1){cout<<"请求分配内存";cout<<"请输入要分配的内存的长度:";intlen;cin>>len;FenPei(len);}elseif(choice==2){cout<<"请求回收内存";cout<<"请输入要回收的内存的ID:";intID;cin>>ID;HuiShou(ID);}elseif(choice==3){break;}else{cout<<"输入有误!请重新选择!";continue;}}return1;}voiddisplay(){FQ*fqBegin=First->next;cout<<"IDtBeginAddre
7、sstLengthtState";while(fqBegin!=NULL){cout<ID<<"t"<beginAddress<<"tt"<length<<"t"<ZY<next;}}voidFenPei(floatlen){FQ*temp=(FQ*)malloc(sizeof(FQ));//当前指针temp=First;while(!(temp->next->ZY==0&&temp->next->length>=len)){temp=tem
8、p->next;}temp=temp->next;FQ*fq1=(FQ*)malloc(sizeof(FQ));fq1->ID=++maxID;fq1->next=temp->next;fq1->beginAddress=temp->beginAddress+len;fq1->length=temp->length-len;fq1->ZY=0;temp->next=fq1;temp->length=len;temp->ZY=1;display();}voidHuiShou(intid){FQ*temp=(FQ*)malloc(sizeof(FQ));//当前指针temp=First
9、;while(!(temp->next->ID==id)){temp=temp->next;}if(temp->ZY==0){if(temp->next->next==NULL){temp->next=NULL;temp->length=temp->length+temp->next->length;}elseif(temp->next->next->ZY==1){temp->next=temp->next->next;temp->length=temp->lengt
此文档下载收益归作者所有