• 締切済み

スタック領域変更

Stack overflow エラーが発生したので、スタック領域を拡張しようと思い、ネットで調べたのですが、その設定画面が自分の持っているやつにはありませんでした。 自分のは Microsoft Visual C++です。 スタック領域変更の仕方教えて下さい。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

開発統合環境(IDE)から実行されているのではないのでしょうか それとも出来上がったEXEを エクスプローラ等から起動しているのでしょうか 前者なら、F5キーによる実行ならエラー発生時にIDEのデバッガが起動するはずです

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

0x1e8480は16進数で表現されているということですよ 2,000,000バイトです つまり 1.907MB(1953.125KB)です Windowsの電卓を起動して 表示 > 関数電卓 表示 > 16進 として 1e8480 を入力 表示 > 10進 とすれば 10進数に変換した値を表示してくれます デバッグ実行しているならエラーで停止した時点で呼び出し履歴をチェックしてみましょう

BOY12345
質問者

補足

デバッグ実行の仕方がわかりません。 以前やろうとしましたが、意味が分からず・・

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

VC++でも VC6/2003/2005/2008などいろいろなバージョンがあります プロジェクトの設定画面のリンカー関連に『スタックサイズ』といった項目があります コンパイラのバージョン、エディションなどを明記しましょう コマンドラインオプションなら /STACK:希望のサイズ になるでしょう 希望のサイズはバイト単位で指定します 本当にスタックの不足なのでしょうか プログラム的にバグがあり期待しないところで再帰がかかっていてスタックを食いつぶしていることも考えられますよ

BOY12345
質問者

補足

さっそくのご解答有難う御座います。 変更する場所は、設定内をいろいろ見ていたら見付けることができました。スタック領域を変更しようと思い、いじりました。 予約とコミットには、0x1e8480と設定されていました。 これを最大にすればまぁスタック領域エラーはでないだろうと思い、 最大値の9294967295を入力しました。 しかしながら、相変わらずスッタクエラーが・・・ ご指摘の通り、プログラムのどこかで食いつぶしが生じていると考え、コードを見直しています。 ところで、0x1e8480とは何kBでしょうか? 単位はkBで、16進法なので、 16^(8480)kBと読めばいいのでしょうか?少々自信がありません。

関連するQ&A