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 + -
显示快捷键?