SIGSEGV在一个简单的程序中

SIGSEGV in a simple program

本文关键字:简单 程序 一个 SIGSEGV      更新时间:2023-10-16

我有这个代码

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)。有人能帮忙吗?

您需要检查n的有效性,否则用户可能会立即崩溃您的程序。一旦n(从而i)超出界限,您将寻址不属于程序的内存。