分段故障(SIGSEGV)

时间:2014-04-14 04:33:38

标签: c++

我是c ++的初学者。这是我的代码。它在代码块中正常工作,但当我将其提交给codechef时,它显示运行时错误(SIGSEGV)。请帮忙!

#include<iostream>

using namespace std;

int main()
{
    long int n, m, x, temp, B1 = 0, B2 = 0;
    long int arr[105];

    cin >> n >> m;

    for(int i = 1; i <= n; i++)
        cin >> arr[i];
    while(m--)
    {
        B1 = B2 = 0;
        cin >> x;
        temp = 1;

        while(temp < x)
            if((arr[x] - arr[temp]) > 0)
                B1 = B1 + (arr[x] - arr[temp++]);
            else
                B2 = B2 + (arr[x] - arr[temp++]);
        cout << B1 - B2 << endl;
    }
}

1 个答案:

答案 0 :(得分:5)

对于大小为N的数组,有效索引介于0和N-1之间。

改变这个:

for(int i=1;i<=n;i++)

对此:

for(int i=0;i<n;i++)
顺便说一下,你还没有指明你的计划的目的,但我猜你也应该将temp=1改为temp=0 ......