C中的Exc_Bad_Access

时间:2014-11-25 12:57:53

标签: c

我是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]);
}

1 个答案:

答案 0 :(得分:1)

问题出在这里

return k_vector_calculation(&krec[3]);

您已通过int数组krek[3],其中有效位置为krek[0]krek[1]krek[2]。此外,您还有一个无限递归您在上一个return语句中反复调用该函数。