- 论坛徽章:
- 0
|
genotype是一个结构体类型,population是一个结构体类型的指针
typedef struct /* genotype (GT), a member of the population */
{
int *gene; /* a string of variables */
int ** code; /* treated as 'b' matrix */
double fitness; /* GT's fitness */
double rfitness; /* relative fitness */
double cfitness; /* cumulative fitness */
} genotype;
genotype * population;
population = (genotype *)malloc(sizeof(genotype)*popSize);
for(i=0;i<popSize;i++){
//initialize an individual
population.cfitness = 0;
population.fitness = 0;
population.rfitness = 0;
//此处为gene分配内存
population.gene = (int *)malloc(sizeof(int)*nodeNum);
//此处为code分配内存
population.code = (int **)malloc(sizeof(int *)*nodeNum);
for(j = 0;j<nodeNum;j++)
population.code[j] = (int *)malloc(sizeof(int)*clusterNum);
for(j = 0;j<nodeNum;j++)
population.gene[j] = rand()%clusterNum;
}
程序结束时我这样释放内存出现了问题
for(i=0; i<popSize; i++){
for(j=0; j<nodeNum; j++)
free(population【i】.code[j]);
free(population【i】.gene);
}
free(population);
难道释放给population分配的内存只要free(population)一条指令就可以了吗?
请问达人这种情况下内存应该如何释放?
[ 本帖最后由 xfmy 于 2009-3-16 21:19 编辑 ] |
|