1

次のコードをC言語で実行すると、コンパイラにエラー " xxx has stopped working" が表示されます。

ただし、配列サイズを 100000 ではなく 1000 にすると、問題なく動作します。何が問題で、どうすれば修正できますか? メモリに問題がある場合、これらの配列に100000個の数値を超えないように入力するにはどうすればよいですか?

私が試したコード:

int main()
{
    int a[100000],l[100000],r[100000],ans[100000],x[100000],y[100000];
    /*
    some code
    */
    return 0;
}
4

5 に答える 5

2

ほとんどのシステムでは、スタックを 1 ~ 4 メガバイトに制限しています。アレイが 2MB をはるかに超えているため、システムのスタック制限を超えている可能性があります。

C では、この問題を解決する方法がいくつかあります。

  • 配列をグローバルにする
  • 配列を作るstatic
  • ヒープのメモリを動的に割り当てます (たとえばmalloc、友人)
  • 単純に配列を小さくする
于 2013-08-09T12:26:36.160 に答える