资源简介
存储器的分配与回收算法其中有最先适应法、最佳适应法、最坏适应法三种 另外还有运行结果截图

代码片段和文件信息
//Memory allocation and recovery algorithm
#include
#include
#include
typedef struct Freelink{//定义自由链
struct Freelink *prior;
char name;
int start;
int size;
bool flag;
struct Freelink *next;
}* ptr*head;
head top;
ptr p;
void print(){//将内存分配情况打印到屏幕上
p=top;
cout<<“************************内存分配情况表************************“< cout<<“区号\t\t“<<“起始位置\t“<<“区间长度\t“<<“区间状态\t“< do{
cout<name<<“\t\t“<start<<“\t\t“<size<<“\t\t“;
if(p->flag==false){cout<<“空闲“< else{cout<<“已占用“< p=p->next;
}
while(p!=NULL);
}
void clear(){//结束操作时清空“内存”以备其他操作
do{
p=top;
top=top->next;
free(p);
}
while(top!=NULL);
}
void asc(ptr &p){//最佳适应法的内存分配函数
int min;
ptr op;
Freelink *fl=(Freelink *)malloc(sizeof(Freelink));
cout<<“请输入要分配内存的进程名“< cin>>fl->name;
cout<<“请输入要分配内存的大小“< cin>>fl->size;
min=256;
fl->flag=true;
do{
if(p->flag==false&&p->size<=min&&p->size>=fl->size){
min=p->size;
op=p;
}
p=p->next;
}
while(p!=NULL);
if(op->size>fl->size){
fl->start=op->start;
op->start=fl->start+fl->size;
op->size=op->size-fl->size;
fl->next=op;
fl->prior=op->prior;
op->prior->next=fl;
op->prior=fl;
goto flag1;
}
if(op->size==fl->size){
op->flag=fl->flag;
op->name=fl->name;
free(fl);
goto flag1;
}
cout<<“内存过小,分配失败!“< flag1: cout<<“分配成功!“< flag2: ;
}
void dec(ptr &p){//最坏适应法的内存分配函数
int max;
ptr op;
Freelink *fl=(Freelink *)malloc(sizeof(Freelink));
cout<<“请输入要分配内存的进程名“< cin>>fl->name;
cout<<“请输入要分配内存的大小“< cin>>fl->size;
max=fl->size;
fl->flag=true;
do{
if(p->flag==false&&p->size>=max){
max=p->size;
op=p;
}
p=p->next;
}
while(p!=NULL);
if(op->size>fl->size){
fl->start=op->start;
op->start=fl->start+fl->size;
op->size=op->size-fl->size;
fl->next=op;
fl->prior=op->prior;
op->prior->next=fl;
op->prior=fl;
goto flag3;
}
if(op->size==fl->size){
op->flag=fl->flag;
op->name=fl->name;
free(fl);
goto flag3;
}
cout<<“内存过小,分配失败!“< flag3: cout<<“分配成功!“< flag4: ;
}
void splice(ptr &p){//若被操作的内存有相邻空闲区则将空闲区拼接合并
int x;
if(p->prior->flag==false&&p->next->flag==false)x=1;
if((p->prior->flag==false&&p->next->flag==true)||(p->prior->flag==false&&p->next==NULL))x=2;
if((p->prior->flag==true&&p->next->flag==false)||(p->prior==NULL&&p->next->flag==false))x=3;
if((p->prior->flag==true&&p->next->flag==true)||(p->prior==NULL&&p->next->flag==true)||(p->prior->flag==true&&p->next==NULL))x=4;
switch(x){
case 1:p->next->prior=p->prior;
p->prior->next=p->next;
p->prior->size=p->prior->size+p->size+p->next->size;
p->prior->next=p->next->next;
if(p->next->next!=NULL)p->next->next->prior=p->next->prior;
free(p->n
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8526 2009-06-15 22:24 存储器的分配与回收算法实现\MAAR\maar.cpp
文件 4260 2009-06-11 21:31 存储器的分配与回收算法实现\MAAR\MAAR.dsp
文件 533 2009-06-11 20:05 存储器的分配与回收算法实现\MAAR\MAAR.dsw
文件 50176 2009-06-15 22:51 存储器的分配与回收算法实现\MAAR\MAAR.ncb
文件 53760 2009-06-15 22:51 存储器的分配与回收算法实现\MAAR\MAAR.opt
文件 1287 2009-06-15 22:14 存储器的分配与回收算法实现\MAAR\MAAR.plg
I.A.... 80400 2009-06-15 21:32 存储器的分配与回收算法实现\截图\最佳适应法\bfa.jpg
I.A.... 47781 2009-06-15 21:35 存储器的分配与回收算法实现\截图\最佳适应法\bfa2.jpg
I.A.... 49431 2009-06-15 21:40 存储器的分配与回收算法实现\截图\最佳适应法\bfa3.jpg
I.A.... 49254 2009-06-15 21:42 存储器的分配与回收算法实现\截图\最佳适应法\bfa4.jpg
I.A.... 80267 2009-06-15 22:04 存储器的分配与回收算法实现\截图\最先适应法\ffa.jpg
I.A.... 42945 2009-06-15 22:06 存储器的分配与回收算法实现\截图\最先适应法\ffa2.jpg
I.A.... 44075 2009-06-15 22:07 存储器的分配与回收算法实现\截图\最先适应法\ffa3.jpg
I.A.... 80441 2009-06-15 21:52 存储器的分配与回收算法实现\截图\最坏适应法\wfa.jpg
I.A.... 64389 2009-06-15 21:54 存储器的分配与回收算法实现\截图\最坏适应法\wfa2.jpg
目录 0 2009-06-15 22:54 存储器的分配与回收算法实现\截图\最佳适应法
目录 0 2009-06-15 22:54 存储器的分配与回收算法实现\截图\最先适应法
目录 0 2009-06-15 22:55 存储器的分配与回收算法实现\截图\最坏适应法
目录 0 2009-06-15 22:52 存储器的分配与回收算法实现\MAAR
目录 0 2009-06-15 22:55 存储器的分配与回收算法实现\截图
目录 0 2009-06-15 22:56 存储器的分配与回收算法实现
----------- --------- ---------- ----- ----
657525 21
- 上一篇:数据结构实验——赫夫曼树相关
- 下一篇:数据结构与C语言综合习题集
相关资源
- C++获取计算机的CPU ID,硬盘序列号等
- C++头文件转delphi工具 + 源码
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
评论
共有 条评论