资源简介

代码主体非本人原创,由于测试中发现问题经本人修改后上传。原资源:https://blog.csdn.net/houchaoqun_xmu/article/details/55541299 该资源VS2010下可直接使用。优化了原代码中当出现请求内存块大小大于现有内存块大小时无法分配内存崩溃的现象。可实现首次适应算法,循环首次适应算法,最佳适应算法,最坏适应算法

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
using namespace std;
int maxsize;
int k[50];
typedef struct memory
{
bool flage;
string name;
int start;
int size;
memory *front;
memory *next;
}rd;
rd *line = new rd;
 
/*
struct node
{
string name;
string operate;
int size;
}node1node2;
*/
 
void init()
{
line->flage = 0;
line->name = “空“;
line->start = 0;
line->size = maxsize;
line->front = NULL;
line->next = NULL;
}
 
void display()
{
rd *di = new rd;
di = line;
while (di != NULL)
{
cout << di->flage << “  “ << di->name << “  “ << di->start << “  “ << di->size << endl;
di = di->next;
}
 
/*
while (q->front != NULL)
{
cout << q->front->flage << “  “ << q->front->name << “  “ << q->front->start << “  “ << q->front->size << endl;
q = q->front;
}
*/
}
 
void firstmethod()
{
cout << “请输入申请的主存大小:  “ << endl;
cin >> maxsize;
init();
display();
while (true)
{
string operate;
rd *temp = new rd;
temp->front = NULL;
temp->next = NULL;
temp->flage = 1;
cout << “请求名称( shutdown 为结束标识符 )“ << endl;
cin >> temp->name;
cout << “请求类型( 申请  完成 )“ << endl;
cin >> operate;
if (operate == “shutdown“)
{
cout << “此次首次适应算法分配结束!“ << endl;
return;
}
else if (operate == “申请“)
{
temp->start = 0;
cout << “请求大小“ << endl;
cin >> temp->size;
rd *p = new rd;
p = line;
while (p != NULL)
{
if (!p->flage && p->size >= temp->size)
{
temp->start = p->start + (p->size - temp->size);
p->size -= temp->size;
if (p->next != NULL)
{
temp->next = p->next;
p->next->front = temp;
}
temp->front = p;
p->next = temp;
}
p = p->next;
}
display();
}
else if (operate == “完成“)
{
rd *p = new rd;
p = line;
while (p != NULL)
{
if (p->name == temp->name)
{
  rd *q = new rd;
q->flage = 0;
q->name = “空“;
q->start = 0;
q->size = maxsize;
q->front = NULL;
q->next = NULL;

if (p->front != NULL)
{
q = p->front;
if (p->front->front != NULL) q->front = p->front->front;
else q->front = NULL;
}
if (!q->flage)
{
q->size += p->size;
 
if (p->next != NULL && !p->next->flage)
{
q->size += p->next->size;
if (q->next->next->next != NULL)
{
q->next->next->next->front = q;
q->next = q->next->next->next;
}
else
{
q->next = NULL;
}
}
else if (p->next != NULL)
{
q->next = p->next;
}
p = q->next;
}
else if (p->next != NULL && !p->next->flage)
{
p->size += p->next->size;
if (p->next->next != NULL)
{
p->next->next->front = p;
p->next = p->next->next;
}
}

else if (((p->front != NUL

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        921  2018-10-31 22:13  动态分区算法\动态分区算法.sln

    ..A..H.     14336  2018-11-12 17:21  动态分区算法\动态分区算法.suo

     文件     628568  2018-11-12 16:32  动态分区算法\Debug\动态分区算法.ilk

     文件     764928  2018-11-12 16:32  动态分区算法\Debug\动态分区算法.pdb

     文件      92160  2018-11-12 16:32  动态分区算法\Debug\动态分区算法.exe

     文件         67  2018-11-12 17:14  动态分区算法\动态分区算法\data.txt

     文件       9853  2018-10-31 22:14  动态分区算法\动态分区算法\分区.cpp

     文件       7531  2018-11-12 22:48  动态分区算法\动态分区算法\动态分区.cpp

     文件       3300  2018-11-01 19:29  动态分区算法\动态分区算法\动态分区算法.vcxproj

     文件       1062  2018-11-01 19:29  动态分区算法\动态分区算法\动态分区算法.vcxproj.filters

     文件        143  2018-10-31 22:13  动态分区算法\动态分区算法\动态分区算法.vcxproj.user

     文件       1704  2018-11-12 16:32  动态分区算法\动态分区算法\Debug\cl.command.1.tlog

     文件      14634  2018-11-12 16:32  动态分区算法\动态分区算法\Debug\CL.read.1.tlog

     文件        920  2018-11-12 16:32  动态分区算法\动态分区算法\Debug\CL.write.1.tlog

     文件       2238  2018-11-12 16:32  动态分区算法\动态分区算法\Debug\link.command.1.tlog

     文件       4886  2018-11-12 16:32  动态分区算法\动态分区算法\Debug\link.read.1.tlog

     文件       1032  2018-11-12 16:32  动态分区算法\动态分区算法\Debug\link.write.1.tlog

     文件        834  2018-11-12 16:32  动态分区算法\动态分区算法\Debug\mt.command.1.tlog

     文件       1494  2018-11-12 16:32  动态分区算法\动态分区算法\Debug\mt.read.1.tlog

     文件        478  2018-11-12 16:32  动态分区算法\动态分区算法\Debug\mt.write.1.tlog

     文件     355328  2018-11-12 16:32  动态分区算法\动态分区算法\Debug\vc100.idb

     文件     282624  2018-11-12 16:32  动态分区算法\动态分区算法\Debug\vc100.pdb

     文件        381  2018-11-12 16:32  动态分区算法\动态分区算法\Debug\动态分区算法.exe.intermediate.manifest

     文件         71  2018-11-12 16:32  动态分区算法\动态分区算法\Debug\动态分区算法.lastbuildstate

     文件       2235  2018-11-12 16:32  动态分区算法\动态分区算法\Debug\动态分区算法.log

     文件        713  2018-11-01 19:29  动态分区算法\动态分区算法\Debug\动态分区算法.vcxprojResolveAssemblyReference.cache

     文件          0  2018-10-31 22:13  动态分区算法\动态分区算法\Debug\动态分区算法.write.1.tlog

     文件     191991  2018-10-31 22:14  动态分区算法\动态分区算法\Debug\首次适应.obj

     文件     222355  2018-11-12 16:32  动态分区算法\动态分区算法\Debug\动态分区.obj

     文件    5853184  2018-11-12 17:21  动态分区算法\动态分区算法.sdf

............此处省略10个文件信息

评论

共有 条评论