关于网友提出的“ 用C++里的delete释放结构体数组空间”问题疑问,本网通过在网上对“ 用C++里的delete释放结构体数组空间”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 用C++里的delete释放结构体数组空间
描述: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<>
{
if(i==0) {page_t[j].e =page[i];page_t[j].yes =1;num++;}
else
{
flag=-1;//若发现缺页,则值应该不变,否则为正数
for(j=0;j
if(page_t[j].e ==page[i])
{
page_t[j].yes =1;//再次进入页框时又被标记为1
flag=j;break;
}
if(flag<0)//1缺页或者2页框还未满
{
if(num
{
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 = "<
<>
}//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<>
cin>>page[i];
}
为什么,就是有内存问题呢?
解决方案1:
1、在源代码编辑窗口的左边框上双击,会出现一个红色的圆点。这个就是所谓断点。
2、从菜单找“启动调试”(或摁F5),当程序执行到红点所在的代码行时,程序执行就会停下来。进入所谓的调试状态。
3、调试状态下,将出现一个调试专用的工具条。上面有一些按钮,自己点击一下就知道干什么用的了。
解决方案2: debug跟踪一下
解决方案3: 报的什么错呢?是编译不过还是运行出错?
以上介绍了“ 用C++里的delete释放结构体数组空间”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3681884.html