for 루프에서 잘못된 점을 말해 줄 수 있습니까? 내가 그것을 실행할 때, 그것은 방해한다. 나는 내가있는 for 루프 그냥 중지 것으로 나타났습니다, 무엇이 잘못되었는지를보기 위해 디버깅하려고 :C++에서 2 차원 배열 삭제
#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+1
에 MAX_POPULATION
를 변경하고 일 : 문제 해결하고자 ======= 여기
는 이유입니다.
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''이 어떻게 생성되었는지 알려주십시오. –
@HeShiming이 완료되었습니다. –
내부 배열의 모든 배열이 초기화 되었습니까? 삭제하기 전에 null이 아닌지 확인하십시오. –