首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

用C++里的delete释放结构体数组空间,该怎么解决

2013-11-25 
用C++里的delete释放结构体数组空间//////////////////////////////////////CLOCK算法部分///////////////

用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跟踪一下
[解决办法]

引用:
对了楼上,请问Debug调试怎么用的,不太会还。望指教。(截个图看下步骤?)

1、在源代码编辑窗口的左边框上双击,会出现一个红色的圆点。这个就是所谓断点。
2、从菜单找“启动调试”(或摁F5),当程序执行到红点所在的代码行时,程序执行就会停下来。进入所谓的调试状态。
3、调试状态下,将出现一个调试专用的工具条。上面有一些按钮,自己点击一下就知道干什么用的了。

热点排行