赞
踩
p=p->next;
}
cout<
void Initial() { // 初始化说明表
SP p,q;
p=(SP)malloc(sizeof(SNode));
q=(SP)malloc(sizeof(SNode));
p->start=14; p->length=12; p->end=26;
q->start=32; q->length=96; q->end=128; // 指导书上的作业分配
Head->next=p; // 与头结点连接
p->next=q;
q->next=NULL;
DispSpace(); }
void Allocation(int len) { // 分配内存给新作业
SP p=Head->next,q;
while (p) {
if (p->length < len)
p=p->next;
else if (p->length > len)
{
p->start=p->start+len;
p->length=p->length-len;
cout<
DispSpace(); return;
}
else
{//当两者长度相等
q=p->next;
p->next=q->next;
cout<
DispSpace(); return;
}
}
cout<
DispSpace(); return; }
void CallBack(int sta,int len) { // 回收内存
SP p=Head,q=p->next,r; // 开始地址和长度
p->end=0;
int en=sta+len;
while (q) {
if (sta == 0) { // 初始地址为0
if (en == q->start) { // 正好回收
q->start=0;
q->length=q->end;
return;
}
else {
r=(SP)malloc(sizeof(SNode));
r->start=sta; r->length=len; r->end=en;
p->next=r;
r->next=q;
return;
}
}
else if ((p->end < sta) && (q->start > en)) { // 上邻区
r=(SP)malloc(sizeof(SNode));
r->start=sta; r->length=len; r->end=en;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。