0

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

我刚刚在 Hackerearth 上尝试了我的问题,它是“查找产品” https://www.hackerearth.com/practice/basic-programming/input-output/basics-of-input-output/practice-problems/algorithm/find -product/ 我提交的是这个,它在代码块编译器上没有给我任何错误,但会弹出一个运行时错误(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;
}

提前致谢 :)

4

1 回答 1

1
  • int product[1][cases];before cin >> cases;,所以输入不会用于分配。
  • 您声明int product[1][cases];了 ,因此只product[0]允许使用并且使用product[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;
}
于 2020-05-17T01:47:32.707 回答