
No.5
- 回答日時:
浅い段階で潰れる==再帰ごとのスタック成長幅が大きい
ってことですよね。この主な原因はスタックに積まれるauto変数(普通の変数)です。このauto変数に対して、static宣言した変数 や new,malloc()で確保したHeap領域上の変数はスタックを成長させません。
実際には両者の複合でstaticなポインタにHeap領域上の変数を割り当てて置き、再帰を抜けたら廃棄、なんてのが多いかも。
この回答への補足
たびたび申し訳ないのですが、スタックに積まれる変数というのは、
再帰呼び出しをする関数に渡す引数のことですよね?
また、
>実際には両者の複合でstaticなポインタにHeap領域上の
>変数を割り当てて置き、
この意味は、例えば
static int *a = new int;
ということですか?
No.3
- 回答日時:
もしかして、DLL作ってませんか?
確かスタックサイズは呼び出し元のEXEから指定されるんで、DLLの設定を変えてもだめだったような・・・
この回答への補足
ご回答ありがとうございます。
プロジェクトはEXEです。けど、DLLはスタックオーバーフローとは関係のないところで使ってます。
関係しているのでしょうか?
No.1
- 回答日時:
スタックサイズを変更するのは簡単ですが、まずはそのプログラムがどうしてオーバーフローするのかを解析する必要があります。
どんなに大きくしても症状が治まらないのなら、それは無限ループにハマってしまってるんです。
それが既存のライブラリで、他のプログラムでは正常に動いているのであれば、使い方を間違っています。
ご自分で作られたのであれば、全体を見直して、バグの箇所を間違っているところを特定しましょう。
膨大な量のスタックを使用することが予め分かっているなら別ですが、そうでなければ、これを修正しないことには、危なくてしょうがないです。
ご回答ありがとうございます。
自分のプログラムでは膨大な量のスタックを利用することが予め分かっています。
しかし、バグの可能性も否定できないので、一応調べてみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSSが全く分かりません、お助け...
-
DLLファイルの逆コンパイラにつ...
-
プログラム言語について c言語...
-
C言語について(初心者)
-
visual studio 2022でのC#プロ...
-
プログラミングc++を全く分か...
-
今ってプログラミング言語は何...
-
逆コンパイルと逆アセンブルの...
-
次の日本語の意味を教えて下さい
-
int16_t の _t は何?
-
Windows Formアプリからコンソ...
-
最初に聞かれたこと
-
Cのプログラムからアクセスでき...
-
プログラミング言語についてc++...
-
C#でTreeViewのCheckBoxのサイ...
-
c#のTLS1.2での通信について
-
プログラマー達は何故、プログ...
-
PIC12F1822でLED調光器を作りたい
-
C言語 関数、変数の宣言について
-
あってる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.netでDLLを読み込んで実行す...
-
printf / sprintf のスタック消...
-
最大スタックサイズを大きくす...
-
ゆゆにゃ。
-
Ethernetヘッダの取得 NDIS
-
gccでスタックサイズを変更する...
-
Visual C++ 2008 オーバーフロ...
-
H8マイコン スタック領域に...
-
ポーランド記法(前置記法)のア...
-
Cプログラミングの関数電卓のア...
-
WINAPについて
-
pthreadのスタックサイズ設定取...
-
_CRTIMPの意味は?
-
逆ポーランド記法
-
エラー?メッセージ
-
再帰処理を非再帰処理に書き換...
-
スタック領域変更
-
スタックのpush/pop動作について
-
VC++でプログラムから現在のス...
-
CASLIIについて
おすすめ情報