1

codechefで練習問題を提出しているときに、非常に奇妙な問題が発生しました。「2Dchar配列のグローバル宣言」のソリューションが受け入れられ、「main関数内の宣言」のソリューションが間違った答えとして拒否される場合。

以下は解決策へのリンクです。

1)グローバル宣言がある:http://www.codechef.com/viewsolution/1138654
2)main()内に遅延がある:http://www.codechef.com/viewsolution/1138660

PS1:main関数の外で2Dchar配列を使用していません。
PS2:配列 "char boardString[1000][1000]"について話しています。

4

2 に答える 2

3

おそらくスタックスペースが不足しているからです。

配列をグローバルに宣言すると、データ/ Bssセグメントに割り当てられます(これは実装の詳細であることに注意してください
。一方、配列を宣言するmain()と、スタック上にローカルに作成されます(これも実装の詳細です) 。

割り当てている配列は巨大であるため(1000 X 10000)、スタックスペースが不足する可能性があります。
Codechefはこの問題を検出するのに十分インテリジェントであるため、配列が含まmain()れているコードを間違った答えとして拒否します。

于 2012-06-22T07:39:55.827 に答える
1

Als が正しく述べているように、問題はおそらくスタック スペースの制限によるものです。変数を内部にカプセル化しmainたいが、スタックに割り当てたくない場合は、変数を宣言するだけstaticです。

于 2012-06-22T08:16:10.940 に答える