次のコードでは、構造に 3 番目の次元を含めたいと思います。構造の遺伝子型と残りの識別子は既に定義されています。これは問題なく動作します:
struct genotype ** populationrows = (struct genotype **) calloc(MAXGENS, sizeof(struct genotype *));
for (k=0; k< MAXGENS; k++) {
populationrows[k]= (struct genotype *) calloc (POPSIZE, sizeof (struct genotype));
for (j=0; j<2; j++) {
for (i=0; i<3; i++) {
populationrows[k][j].fitness = 0;
populationrows[k][j].rfitness = 0;
populationrows[k][j].cfitness = 0;
populationrows[k][j].lower[i] = 1.0;
populationrows[k][j].upper[i]= 2.0;
populationrows[k][j].gene[i] = 3.0;
printf(" populationrows[%u][%u].gene[%u]=%25lf \n", k,j,i,populationrows[k][j].gene[i]);
}
}
}
そして、3次元については、次のことを試しました。
構造体遺伝子型 * **人口行 = (構造体遺伝子型 * **) calloc(numFiles, sizeof(構造体遺伝子型 * *));
for (w=0; w< numFiles; w++){
populationrows[w]= (構造体遺伝子型 **) calloc (MAXGENS, sizeof (構造体遺伝子型 *));
for (k=0; k<MAXGENS; k++) {
for (j=0; j<2; j++) {
for (i=0; i<3; i++) {
populationrows[w][k][j].fitness = 0;
populationrows[w][k][j].rfitness = 0;
populationrows[w][k][j].cfitness = 0;
populationrows[w][k][j].lower[i] = 1.0;
populationrows[w][k][j].upper[i]= 2.0;
populationrows[w][k][j].gene[i] = 3.0;
printf(" populationrows[%u][%u][%u].gene[%u]=%25lf \n", w,k,j,i,populationrows[w][k][j].gene[i]);
}
}
}
}
しかし、これによりセグメンテーション違反が発生します。
このセグメンテーション違反を回避する方法を教えていただけませんか? どんな助けでも大歓迎です。
お返事ありがとうございます!!!