我的程序中调用了以下函数:
void fft(int fft_nLen, int fft_M,int isign)
{
int i;
int lev,dist,p,t;
complex B;
W = (complex *)malloc(complexsize*fft_nLen/2);
for(lev=1; lev<=fft_M; lev++)
{
dist = (int)pow(2.0,lev-1);
for(t=0; t<dist; t++)
{
p = isign*t*(int)pow(2.0,fft_M-lev);
W[p].real = (float)cos(2*PI*(p)/fft_nLen);
W[p].image = (float)(-1*sin(2*PI*(p)/fft_nLen));
for(i=t; i<fft_nLen; i=i+(int)pow(2.0,lev))
{
B = Add(A[i],Mul(A[i+dist],W[p]));
A[i+dist] = Sub(A[i],Mul(A[i+dist],W[p]));
A[i].real = B.real;
A[i].image = B.image;
}
}
}
free(W);
}
我在网上查到,出现这种问题一般都是同一个内存释放了两次,但是我的问题是,当isign设置为1的时候,程序运行正常,当isign设置为-1时才会报错。所以应该和内存重复释放没有关系。那么问题出现在哪里呢?