我的代码不适用于输入 1 和 1000 或任何其他更大的输入

2022-01-12 00:00:00 segmentation-fault c++

当我尝试为输入 1 和 1000 运行此代码时,它会显示分段错误.此代码中的更正是什么?

when i am trying to run this code for input 1 and 1000 it shows me segmentation fault .what will be the correction in this code ?

void sorting(int sum[],long int k);

int main() {
    int sum[100000]; 
    int L,R,i,j;
    long int k=0;

    cin>>L;

    cin>>R;
    for(i=L;i<=R;i++)
    {
        for(j=i;j<=R;j++)
        {
            sum[k]=i^j;
            k++;
        }
    }

    sorting(sum,k);

    cout<<sum[k-1];
    return 0;
}

void sorting(int sum[],long int k)
{
    int i,j;
    long int temp;
    for(i=0;i<k;i++)
    {
        for(j=0;j<k;j++)
        {
            if(sum[i]<=sum[j])
            {
                temp=sum[i];
                sum[i]=sum[j];
                sum[j]=temp;
            }
        }
    }

}

推荐答案

由于堆栈溢出导致分段错误.这一行:

The segmentation fault is caused by stack overflow. This line:

int sum[100000]; 

sum使用了400K的栈空间,比正常的栈空间大.

sum uses 400K spaces of stack, which is bigger than the normal size of stack.

要解决这个问题,你可以使用 std::vector 来实现 sum.

To fix the problem, you can use std::vector to implement sum instead.

相关文章