分段故障

时间:2011-08-07 09:39:06

标签: c segmentation-fault

在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;
    }
}

2 个答案:

答案 0 :(得分: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太大,而您的地址无效。

答案 1 :(得分:2)

您有索引串扰。

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

应该是

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