SIGSEGV在一个简单的程序中

时间:2015-12-08 22:03:41

标签: c++ runtime-error sigsegv

我有这段代码

typedef long long int ll;
#define MOD 1000000007
ll t,n,total,answer[2][1025];
int arr[100001];
cin>>n;
for(int i=0;i<n;i++)
cin>>arr[i];
memset(answer,0,sizeof(answer));
memset(arr,0,sizeof(arr[0]*n));
for(int i=1; i<n; i++)
{
    for(int j=0; j<=1024; j++)
    {
        int index1=(i-1)%2;
        int index2=j^arr[i];
        ll pre1=answer[index1][j]%MOD;
        ll pre2=answer[index1][index2]%MOD;
        answer[(i%2)][j]=(pre1+pre2)%MOD;
    }
}

我无法找出此代码为何提供RE(SIGSEGV)。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您需要检查n的有效性,否则用户可能会立即崩溃您的程序。只要n(从而i)超出范围,您就会解决不属于您的程序的内存。