有人可以告诉我什么是for循环?当我运行它时,它会中断。我试图调试,看看有什么是错的,我注意到,在for循环,它只是停止:在C++中删除2d数组
#define MAX_POPULATION 64
float **tr_pop;//Tournament candidates
float **matingPool;//Mating pool
tr_pop=new float *[m];
matingPool=new float *[m];
for(l=0;l<m+1;l++)//allocating
{
tr_pop[l]=new float[MAX_POPULATION];
matingPool[l]=new float[MAX_POPULATION];
}
for (int r = 0; r < row; ++r)//deleting
{
delete [] matingPool[r];//Stops here (not ending program just frozen)
delete [] tr_pop[r];
}
delete [] tr_pop;
delete [] matingPool;
=======确定。问题解决了=======
这里的原因是:
我只是改变了MAX_POPULATION
到MAX_POPULATION+1
和它的工作。
for(l=0;l<m+1;l++)
{
tr_pop[l]=new float[MAX_POPULATION+1];
matingPool[l]=new float[MAX_POPULATION+1];
}
因为在其他功能我觉得我是在做违反:
void crossover()
{
int p1,p2,i,j;float tempBit;
p1=m/3;
p2=(2*m)/3;
for(j=0;j<MAX_POPULATION;j++)
{
for(i=p1;i<p2;i++)
{
tempBit=matingPool[i][j];
matingPool[i][j]=matingPool[i][j+1];//THE VIOLATION POINT (I THINK)
matingPool[i][j+1]=tempBit;
}
j++;
}
正如你可以看到,当j = MAX_POPULATION
在循环结束时,我试图达到MAX_POPULATION + 1
。所以我改变了拨款列,问题解决:)
请发布''matingPool''和''tr_pop''是如何创建的。 – 2012-04-09 09:55:43
@HeShiming完成。 – 2012-04-09 10:01:15
内部数组中的所有数组是否都已初始化?在删除之前检查它们是否为空。 – 2012-04-09 10:01:17