我用MFC编写了一段基于对话框的命令按钮,按钮按下后对数组数据进行处理的程序:
void CDprocess::Fft(double Xc[],double Xs[],int N, int Inv)
{
  double M = log(N) / log(2) + 0.1;
  int NV2 = N / 2;
  int NM1 = N - 1;
  int J = 1;
  double  Tc;
  double  Ts;
  int k;
for(int I=1;I<=NM1;I++)
{  
    if(I<J) 
{
      Tc = Xc[J];
      Ts = Xs[J];
      Xc[J] = Xc[I];
      Xs[J]= Xs[I];
      Xc[I]= Tc;
      Xs[I] = Ts;
}
    k=NV2;
    while(k<J)
{
    J=J-k;
    k=k/2;
}
    J = J + k;
}
double Pi=3.14159265358579;
int  LE,LE1,IP;
double  Uc,Us,Wc,Ws,Uc1;
for(int L=1;L<=M;L++)
{
   LE = 2 ^ L;
   LE1 = LE / 2;
   Uc = 1.0;
   Us =0.0;
   Wc = cos(Pi/LE1);
   Ws = -sin(Pi/LE1);
   if(Inv!=0)
   {
Ws=-Ws;
   }
   for(J=1;J<=LE1;J++)      
   {
   for(I=J;J<=N;I+=LE)
   {
        IP = I + LE1;
        Tc = Xc[IP] * Uc - Xs[IP] * Us;   //problem!!
        Ts = Xs[IP] * Uc + Xc[IP] * Us;
        Xc[IP]=Xc[I]-Tc;
        Xs[IP]=Xs[I]-Ts;
        Xc[I]=Xc[I]+Tc;
        Xs[I]=Xs[I]+Ts;
   }
     Uc1 = Uc * Wc - Us * Ws;
     Us = Us * Wc + Uc * Ws;
     Uc = Uc1;
   }
}
  if(Inv!=0) 
  {
    for(int I=1;I<=N;I++)
{
     Xc[I] = Xc[I]/N;
     Xs[I] = Xs[I]/N;
    }
  }
return;
}
在运行时,可以通过编译,但是对话框不知道为何消失。
另外在调试时,却出现Unhandled Exception in myfile.exe (NTDLL.DLL):0XC0000005:Access Violation!消息提示对话框,
此时光标停在:77F61769 Push esi 处。  
     
另外在调试窗口出现:
Loaded 'ntdll.dll', no matching symbolic information found.
..................
The thread 0x5B8 has exited with code 1 (0x1).
First-chance exception in wave.exe: 0xC0000005: Access Violation.
First-chance exception in wave.exe (NTDLL.DLL): 0xC0000005: Access Violation.
请各位专家、朋友,帮个忙看一下错误的原因,应该如何改正!
   谢谢!