neicun.cpp
来自「用c++编的内存的分配与回收,用数组进行编写,采用结构体」· C++ 代码 · 共 120 行
CPP
120 行
#include<string.h>
#include<iostream.h>
#include<conio.h>
#include<time.h>
#include<stdlib.h>
#include<iomanip.h>
struct kongkuai
{
int address;
int size;
int biaozhi;
}kong[];
kongkuai kong[]={
{0,0,1},
{0,0,1},
{0,0,1},
{0,0,1},
{0,0,1},
{0,0,1}
};
int jcg;
int allocate(int jcsize)
{
int i;
int t=0;
for(i=0;i<jcg;i++)
if(kong[i].biaozhi==1&&kong[i].size>jcsize)
{
kong[i].address+=jcsize;
kong[i].size-=jcsize;
t=1;
return kong[i].address-jcsize;
}
else
if(kong[i].biaozhi==1&&kong[i].size==jcsize)
{
kong[i].biaozhi=0;
t=1;
return kong[i].address;
}
if(t==0)
return false;
else
return true;
}
callback()
{
int s,len,t1=0,t2=0,t3=0,i,j;
cout<<"请输入释放区的起始地址:";
cin>>s;
cout<<"请输入释放区的大小:";
cin>>len;
for(i=0;i<jcg;i++)
{
if((kong[i].address==s+len)&&(kong[i].biaozhi==1))
{
len+=kong[i].size;
t1=1;
for(j=0;j<jcg;j++)
{
if((kong[j].address+kong[j].size==s)&&(kong[j].biaozhi==1))
{
kong[i].biaozhi=0;
kong[j].size=kong[j].size+len;
t2=1;
break;
}
if(t2==0)
{
kong[i].address=s;
kong[i].size=len;
break;
}
}
}
}
if(t1==0)
{
for(i=0;i<jcg;i++)
{
if((kong[i].address+kong[i].size==s)&&(kong[i].biaozhi==1))
{
kong[i].size+=len;
t3=1;
break;
}
if(t3==0)
for(j=0;j<jcg;j++)
if(kong[j].biaozhi==0)
{
kong[j].address=s;
kong[j].size=len;
kong[j].biaozhi=1;
break;
}
}
}
return 1;
}
void print()
{
int i;
cout<<"********************************************"<<endl;
cout<<"* 起始地址 | 大小 | 标记 *"<<endl;
cout<<"********************************************"<<endl;
for(i=0;i<jcg;i++)
{
cout<<setw(4)<<kong[i].address<<" "<<" | "<<setw(4)<<kong[i].size<<" "<<" | "<<setw(4)<<kong[i].biaozhi<<endl;
cout<<"--------------------------------------------"<<endl;
}
cout<<endl;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?