无法识别代码中的SIGSEGV错误

时间:2017-06-11 17:28:58

标签: c++ arrays segmentation-fault

你得到一个大小为N的数组A,由正整数组成。你需要找到并打印这个数组中的所有数字的乘积Modulo 10 ^ 9 + 7.

输入格式:

第一行包含表示数组大小的单个整数N.下一行包含N个空格分隔的整数,表示数组的元素

输出格式:

打印一个整数,表示数组Modulo 10 ^ 9 + 7

的所有元素的乘积

约束:

1≤N≤10^3

1≤A[i]≤10^3

示例输入:

5

1 2 3 4 5

示例输出:

120

代码在样本测试用例中运行正常,但是当我在hackerearth上提交时,它显示出分段错误。我无法确定故障的位置。

如果您发现这是一个微不足道的问题,我道歉。

代码是:

#include <bits/stdc++.h>
using namespace std;

    int main()
    {   
    int i,N;
    int A[i];
    int answer = 1;
    cin >> N ;
    for(int i=0;i<=N-1;i++)
    {   
        cin >> A[i];
        answer = (answer*A[i])%(int)(1000000007);
    }
    cout << answer;
    return 0;
}

1 个答案:

答案 0 :(得分:0)

你刚刚收到堆栈溢出。 i具有未定义的值,可能是一个非常大的值。因此,数组太大而无法放入程序的堆栈地址空间。