2011-08-07 57 views
0

在C中,当我尝试运行该程序时,出现“分段错误”。这是什么意思?我怎样才能解决这个问题?分段错误

Tag tagNewDataPoint(const double x[MAX_DIMENSION], 
        const double w[MAX_DIMENSION], 
        const int d) 
{ 
    int separator_arr,point_arr; 
    double result = 0; 
    for (separator_arr=0;separator_arr<d;separator_arr++) 
    { 
     for (point_arr=0;point_arr<d;separator_arr++) 
     { 
      result += w[separator_arr]*x[point_arr]; 
     } 
    } 

    if (result <0) 
    { 
     return NEG; 
    } 
    else if (result >0) 
    { 
     return POS; 
    } 
    else 
    { 
     return NOTAG; 
    } 
} 
+0

作为一个风格的时候,你可能会做的更好来命名索引变量,像 “point_ind” 而不是 “point_arr”。调用“point_arr”给人的感觉是它是一个数组,这当然不是这种情况。 –

+0

@sinsedrix我试图编辑它,它显示写更多的行,你的问题是充满代码。 –

回答

5

此:

for (point_arr=0;point_arr<d;separator_arr++) 

应该是:

for (point_arr=0;point_arr<d;point_arr++) 

您递增separator_arr,但检查pointer_arr值(这是永远不会改变的)很快separator_arr是太大了,你的地址是无效的。

2

您有索引串扰。

for (point_arr=0;point_arr<d;separator_arr++)

应该

for (point_arr=0;point_arr<d;point_arr++)