test dword ptr [eax],eax ;プローブページです。
POJ2593の話題はPOJ2479と全く同じですが、文字列が100000と大きくなることを除けば、POJ2479と同じです。そこで、前回のブログの方法に従って、callMax関数でローカル変数left[100000]とright[100000]を宣言し、main関数でローカル変数a[100000]も宣言して実行したところ、何かおかしなことになったのです。コンパイル時にはエラーは出なかったのですが、実行時には必ず割り込み例外が発生しました。そこでデバッグしてみると、int left[100000];と宣言した後、さらに下にジャンプするとエラーになり、アセンブリ文 ""test dword ptr [eax],eax ; プローブページで止まっていることが判明しました。不思議に思ってググってみたら、スタックオーバーフローと判明。
これは、ローカル配列の変数定義で割り当てられる最大空間の設定の大きさと関係があります。ローカル変数のアプリケーションスペースはスタックに格納されますが、ウィンドウズのデフォルトのスタックメモリは1Mなので、アプリケーションスペースが1Mより大きくなるとオーバーフローエラーが発生します。
ウェブ上での解決策は、スタックスペースのサイズを拡大することです
VSの場合:プロジェクト->プロパティ->リンカー->システム->スタック予約サイズ
注:ここにはバイト数が記入されています
2Mに拡張するなら1024*1024*2=2097152、あとはコンパイルして実行すれば合格です。
もちろん、VSのプロパティを変更するのは億劫です。私がやったことは
ローカル変数をグローバルスコープに移動させ、スタック容量の制限がないようにする。しかし、グローバル変数の名前を変更しなければなりません。なぜなら、left と right はすでに名前空間 std を使ってその名前の変数を持っており、コンパイラーは "left is not clear" と報告してしまうからです。そこで、left1 と right1 という名前に変更して、コンパイルして合格しました。コンパイルはパスし、実行もパスしました。
関連
-
Vueはeslintrc.jsファイルを設定することで、no-trailing-spacesやno-undefなどのコンパイル時のエラーを修正することができます。
-
com.android.tools.build:gradle:3.3.1 が見つかりませんでした。
-
mac git エラーを使用します。.git/FETCH_HEAD を開けない: パーミッションが拒否されました。
-
eclipseを起動中、エラー。スレッド "main" で例外発生 java.lang.
-
javaは起動したが、終了コード=-805306369を返した。
-
画像ダウンロードの問題
-
AssertionError [ERR_ASSERTION]: タスク関数を指定しなければならない、gulpのバージョンが一致しない
-
configparserモジュールがインポートできない、import configparserエラー解決法
-
ImportError: Python スクリプトの実行時に 'Queue' という名前のモジュールがありません。
-
落とし穴を踏む-Uncaught Error: BootstrapのJavaScriptは、jQueryを必要とします。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
エラー: collect2:ld が 1 の終了ステータスを返した (要約)
-
解決策:matlab スレッド "AWT-EventQueue-0" で例外発生 java.lang.OutOfMemoryError: Javaヒープ
-
C++におけるconst_castの役割と理由
-
C言語エラー C2601: 'main' : ローカル関数定義が不正
-
[UE4公式ドキュメント翻訳】Unreal Engine 4 For Unity Developers (UE4、ユニティデベロッパーズ向け)
-
PL/SQL使用時にORA-06550エラーが発生しました。
-
OSError: [Errno 98] アドレスはすでに使用中です(エラーは解決されました)
-
id 'com.android.library' を持つプラグインが見つかりません。
-
新ソナーコードのレビュー課題のまとめ
-
javaで引用符"が"に変換される問題