C++ 在Hackerearth上获取运行时错误(SIGSEGV),无法找出代码中的错误

C++ 在Hackerearth上获取运行时错误(SIGSEGV),无法找出代码中的错误,c++,compiler-errors,segmentation-fault,online-compilation,C++,Compiler Errors,Segmentation Fault,Online Compilation,我知道这是一个无效的内存引用错误,但我似乎无法在我的代码中找到错误的原因 我刚刚在Hackerearth上试过我的问题,那是“查找产品” 我提交的是这个,它没有给我关于代码块编译器的错误,但是弹出一个运行时错误SIGSEGV #include <iostream> using namespace std; int main() { int cases; int pro = 1; int product[1][cases]; cin >> cases;

我知道这是一个无效的内存引用错误,但我似乎无法在我的代码中找到错误的原因

我刚刚在Hackerearth上试过我的问题,那是“查找产品” 我提交的是这个,它没有给我关于代码块编译器的错误,但是弹出一个运行时错误SIGSEGV

#include <iostream>

using namespace std;

int main() {
  int cases;
  int pro = 1;
  int product[1][cases];
  cin >> cases;
  for (int x = 0; x < cases; x++) {
    cin >> product[1][x];
  }
  for (int x = 0; x < cases; x++) {
    pro *= product[1][x];
  }
  cout << pro;
}
提前感谢:

您的int产品[1][cases];在cin>>案例之前;,因此,输入将不会用于分配。 您声明了int产品[1][cases];,因此,只允许使用产品[0],使用产品[1]超出范围无效。 可变长度数组不在C++标准中。 试试这个:

#include <iostream>

using namespace std;

int main() {
  int cases;
  int pro = 1;
  cin >> cases;
  int* product = new int[cases];
  for (int x = 0; x < cases; x++) {
    cin >> product[x];
  }
  for (int x = 0; x < cases; x++) {
    pro *= product[x];
  }
  cout << pro;
  delete[] product;
}

编译器应该至少给出一些关于该代码的警告。不要忽略它们。你忘了取模。你以后会得到错误的答案,因为你没有阅读和理解所有的说明。你可以用三个整数来解决这个问题;您不需要存储所有的数字。