用C++里的delete释放结构体数组空间
//////////////////////////////////////CLOCK算法部分//////////////////
void CLOCK()
{
arr *page_t;
int i,j,pointer,times=0,flag=-1,num=0;//pointer为查找位置
page_t=new arr[m];
//==============================开始计算=============
if(n<=m)
cout<<"No fault.\n";//如果n<=m不可能缺页
else
{//当n>m时,计算缺页次数
for(i=0,j=0;i<n;i++)
{
if(i==0){page_t[j].e =page[i];page_t[j].yes =1;num++;}
else
{
flag=-1;//若发现缺页,则值应该不变,否则为正数
for(j=0;j<num;j++)//所需页面是否已在页框中
if(page_t[j].e ==page[i])
{
page_t[j].yes =1;//再次进入页框时又被标记为1
flag=j;break;
}
if(flag<0)//1缺页或者2页框还未满
{
if(num<m)//2页框未满时
{
page_t[num].e =page[i];
page_t[num].yes =1;
num++;
}
else
{//1如果缺页
for(pointer%=m;;++pointer%=m)//循环查找为0的页框
if(page_t[pointer].yes ==0)
{//找到置换它,缺页次数+1,置换后yes置1
page_t[pointer].e =page[i];
page_t[pointer].yes =1;
++pointer%=m;
times++;break;
}
else//未置换,标志位置0
page_t[pointer].yes =0;
}
}//if
}//else
}//for
cout<<"缺页率:times/m = "<<times<<"/"<<m<<"= "<<(float)times/m<<endl;
}//else
delete []page_t;
}/////////////////////////////CLOCK算法结束、、、、、、、、
//==============================主函数========================
int main()
{
Initial();
cout<<"=============================CLOCK算法:\n\n";
CLOCK();
delete []page;
}
其中
//全局变量:
int m,n;//:m=物理块数,n=页面总项;
int * page;//:存放页面
void Initial()
{
cout<<"请输入物理块数:m = ";
cin>>m;
cout<<"\n请输入页面总项:n = ";
cin>>n;
page=new int[n];
cout<<"请输入各个页面号,以空格号间隔:\n";
for(int i=0;i<n;i++)
cin>>page[i];
}
为什么,就是有内存问题呢? C++ delete 动态结构体数组
[解决办法]
报的什么错呢?是编译不过还是运行出错?
[解决办法]
debug跟踪一下
[解决办法]