读书人

那位大哥看看这个程序,为什么在delete

发布时间: 2012-02-21 16:26:23 作者: rapoo

那位大哥看看这个程序,为什么在delete []b的时候会出错???而删除这一行就没有问题
#include <iostream>
using namespace std;
void main()
{
int i,k,m,j,jr,jl,jj;
bool flag(0);
while (cin> > k && k <14)
{
if (k == 0)
break;
int *a = new int[2*k];

int *b = new int[k*2];
m = k+1;
for(i=0;i <2*k;i++)
a[i] = i+1;
while (!flag)
{
for(i=2*k;i> 1;i--)
{
j = m%i;
if (j == 0)
{
j = i;
}


for(jr=0;jr <(i-1) && j <i; jr++,j++)
{
b[jr] = a[j];
}
if (j == i)
{
for(jl=jr,j=0;jl <i && j <(i-1);jl++,j++)
{
b[jl] = a[j];
}
}
else
{
for(jl=jr,j=0;jl <i && j <(m%i-1);jl++,j++)
{
b[jl] = a[j];
}
}
b[jl] = a[j];

for(jj=0;jj <i;jj++)
{
a[jj] = b[jj];
b[jj] = 0;
}

if (a[i-1] <(k+1) && i> k)
{
m++;
for(i=0;i <2*k;i++)
a[i] = i+1;
break;
}


if (i == k+1)
{
flag = 1;
break;
}

}
}
cout < <m < <endl;
flag = 0;
delete [] a;
delete [] b;
}
}

[解决办法]
应该是越界了,好好检查一下数组索引是不是在正确的范围之内。
[解决办法]
用STL实现

读书人网 >C++

热点推荐