我是新來的C和此刻的我試圖調試我的代碼。我在這個特定的錯誤上遇到了死衚衕。它給我一個錯誤:EXC_BAD_ACCESS用C
THREAD 1:EXC_BAD_ACCESS(代碼= 2,地址= 0x7fff5fc00000)出現在部分KREC
誤差[0]。
我還沒有搞清楚什麼是允許在C和編寫C時,什麼是不允許。希望能有一些建議讓我的代碼更高效。這裏是我的代碼:
int k_vector_calculation(int krec[3])
{
int Boxx[3], Boxy[3], Boxz [3];
Boxx[0] = lx ;
Boxx[1] = 0 ;
Boxx[2] = 0 ;
Boxy[0] = 0 ;
Boxy[1] = ly ;
Boxy[2] = 0 ;
Boxz[0] = 0 ;
Boxz[1] = 0 ;
Boxz[2] = lz ;
int Productbc[3], Productac[3], Productab[3] ;
Productbc[0] = Boxy[1] * Boxz[2] ;
Productbc[1] = 0 ;
Productbc[2] = 0 ;
Productac[0] = 0 ;
Productac[1] = Boxx [0]* Boxz [2] ;
Productac[2] = 0 ;
Productab[0] = 0 ;
Productab[1] = 0 ;
Productab[2] = Boxx [0]* Boxy [1] ;
float V0 = 0;
V0 = lx*ly*lz ;
int u[3], v[3], w[3] ;
u[0] = 2*PI/V0*Productbc[0] ;
u[1] = 2*PI/V0*Productbc[1] ;
u[2] = 2*PI/V0*Productbc[2] ;
v[0] = 2*PI/V0*Productac[0] ;
v[1] = 2*PI/V0*Productac[1] ;
v[2] = 2*PI/V0*Productac[2] ;
w[0] = 2*PI/V0*Productab[0] ;
w[1] = 2*PI/V0*Productab[1] ;
w[2] = 2*PI/V0*Productab[2] ;
int l, m, o;
l = nearbyint(lx) ;
m = nearbyint(ly) ;
o = nearbyint(lz) ;
krec[0] = l*u[0]+m*v[0]+o*w[0] ;
krec[1] = l*u[1]+m*v[1]+o*w[1] ;
krec[2] = l*u[2]+m*v[2]+o*w[2] ;
return k_vector_calculation(&krec[3]);
}
你的函數看起來像一個遞歸函數。這是真的嗎? – ysap 2014-11-25 13:04:27
您已被重複告知**,當變量的定義爲'int krec [3]'時,'&krec [3]'無效。 – 2014-11-25 13:04:31
此外,如果無效數組訪問沒有你的程序崩潰,你將最終堆棧溢出,因爲您的(可能是無意的)遞歸沒有基本情況/終止條件。 – 2014-11-25 13:06:53