我有这段代码
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)。有人可以帮忙吗?
答案 0 :(得分:0)
您需要检查n
的有效性,否则用户可能会立即崩溃您的程序。只要n
(从而i
)超出范围,您就会解决不属于您的程序的内存。