プロが教えるわが家の防犯対策術!

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

A 回答 (3件)

VC++でも VC6/2003/2005/2008などいろいろなバージョンがあります



プロジェクトの設定画面のリンカー関連に『スタックサイズ』といった項目があります
コンパイラのバージョン、エディションなどを明記しましょう

コマンドラインオプションなら /STACK:希望のサイズ になるでしょう
希望のサイズはバイト単位で指定します

本当にスタックの不足なのでしょうか
プログラム的にバグがあり期待しないところで再帰がかかっていてスタックを食いつぶしていることも考えられますよ

この回答への補足

さっそくのご解答有難う御座います。

変更する場所は、設定内をいろいろ見ていたら見付けることができました。スタック領域を変更しようと思い、いじりました。

予約とコミットには、0x1e8480と設定されていました。
これを最大にすればまぁスタック領域エラーはでないだろうと思い、
最大値の9294967295を入力しました。
しかしながら、相変わらずスッタクエラーが・・・
ご指摘の通り、プログラムのどこかで食いつぶしが生じていると考え、コードを見直しています。

ところで、0x1e8480とは何kBでしょうか?
単位はkBで、16進法なので、
16^(8480)kBと読めばいいのでしょうか?少々自信がありません。

補足日時:2008/09/29 14:14
    • good
    • 0

開発統合環境(IDE)から実行されているのではないのでしょうか


それとも出来上がったEXEを エクスプローラ等から起動しているのでしょうか

前者なら、F5キーによる実行ならエラー発生時にIDEのデバッガが起動するはずです
    • good
    • 0

0x1e8480は16進数で表現されているということですよ



2,000,000バイトです つまり 1.907MB(1953.125KB)です
Windowsの電卓を起動して 表示 > 関数電卓
表示 > 16進 として 1e8480 を入力
表示 > 10進
とすれば 10進数に変換した値を表示してくれます

デバッグ実行しているならエラーで停止した時点で呼び出し履歴をチェックしてみましょう

この回答への補足

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

補足日時:2008/09/29 20:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!