我定义了一个这样的结构体:
struct population
{
unsigned int *chrom;
double weightiness;
double fitness;
};
struct population *newpop,oldpop;
这样为他们分配内存空间:
oldpop=new struct population[popsize];
newpop=new struct population[popsize];
for(i=0;i<popsize;i++)
{
oldpop[i].chrom=new unsigned int[lchrom];
newpop[i].chrom=new unsigned int[lchrom];
}
问题是怎么回收他们的内存空间啊? for(i=0;i<popsize;i++)
{
delete[] oldpop[i].chrom;
delete[] newpop[i].chrom;
}
delete[] oldpop;
delete[] newpop;这样回收,程序报错
在 delete[] oldpop[i].chrom;处报错:
File:dbgheap.c
Line:1017Expression:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)希望大家给与指点,谢谢
struct population
{
unsigned int *chrom;
double weightiness;
double fitness;
};
struct population *newpop,oldpop;
这样为他们分配内存空间:
oldpop=new struct population[popsize];
newpop=new struct population[popsize];
for(i=0;i<popsize;i++)
{
oldpop[i].chrom=new unsigned int[lchrom];
newpop[i].chrom=new unsigned int[lchrom];
}
问题是怎么回收他们的内存空间啊? for(i=0;i<popsize;i++)
{
delete[] oldpop[i].chrom;
delete[] newpop[i].chrom;
}
delete[] oldpop;
delete[] newpop;这样回收,程序报错
在 delete[] oldpop[i].chrom;处报错:
File:dbgheap.c
Line:1017Expression:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)希望大家给与指点,谢谢
BYTE btnew[popsize]={0};for(i=0;i<popsize;i++)
{
oldpop[i].chrom=new unsigned int[lchrom];
newpop[i].chrom=new unsigned int[lchrom];
btold[i]=(BYTE*)&oldpop[i].chrom;
btnew[i]=(BYTE*)&newpop[i].chrom;
}for(i=0;i<popsize;i++)
{
delete ((void*)&btold[i]);
delete ((void*)&btnew[i]);
}
delete[] oldpop;
delete[] newpop;最好使用链表操作,