No.2
- 回答日時:
stack overflowということは、関数の呼び出しが深すぎるか、
関数にローカルな変数が多すぎるかです。
関数から自分自身を呼び出す再帰呼出しをしていて、
その終了条件が誤ってませんか?
巨大な配列変数を関数内で宣言していませんか?
もし、それらに問題ない場合、stack のサイズが小さすぎるのかもしれません。
UNIXであればシェル内で stack のサイズを増やすことができると思います。
とはいえ、デフォルトの stack サイズでも overflow しないように書くのが
本筋でしょう。
No.3ベストアンサー
- 回答日時:
スタックとはメモリの一部で、主にローカル変数の確保や関数呼び出し元のアドレス保存、関数へのパラメータ受け渡し領域として使われます。
stack overflowとは、スタックとして割り当てられているメモリ領域を使い切ってしまったというOSからのエラーメッセージです。
考え得る原因はpunchan_jpさんのおっしゃる通りです。その中でも一番ありがちなのが、巨大な配列の関数内確保ですね。
簡単な解決策はグローバル変数にすることです。グローバル変数はスタックとは別のメモリ領域に確保されます。関数内でもstaticを付けて宣言すれば同様になります。
また、mallocによってメモリを動的確保するのも手です。この場合初期化はできませんが。
再帰関数の終了条件設定ミスもよくあります。これはアドバイスできる範疇ではないので、もし思い当たるならば、補足辺りにその関数を載せてもらわないと回答はムリですね。
No.4
- 回答日時:
使っているのは Visual C (もしくは MSC) ですよね。
コマンドラインでコンパイルをしているのであれば、 /F オプションで
指定します。
d:\> cl /F20000000 ...
プロジェクトを作っているのであれば、プロジェクトの設定で、「リンク」
というタブがあるはずで、そこでスタックのサイズを指定できます。
多分、「スタックアロケーション」の「リザーブ」となっているはず。
指定は、バイト単位で、デフォルトでは 1Mbyte なので、それよりも
大きな数字を設定することになります。
もし、スタックが足りなくなっている原因が関数の呼出しが深すぎる
ことが原因であれば、スタックサイズの指定をしても問題は解決しません。
プログラムの見直しをしましょう。
ただし、普通の呼出しかたでは、めったにこうなることはありません。
プログラムの中で、関数の再帰呼出しをしていなければ、スタックサイズの
指定でいけるはずです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- FX・外国為替取引 MQL5にて謎のエラーが発生!だれか対処を教えてください! 1 2023/03/25 15:59
- オープンソース Vue+Laravelのデザインテンプレートのサンプルが起動できない 1 2022/05/18 21:52
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Windows 10 Windows Updateの更新ができない場合に初期化 3 2023/01/18 20:00
- その他(プログラミング・Web制作) cryptcatのビルド 4 2022/07/21 14:55
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- その他(パソコン・周辺機器) dvd書き込めない 5 2022/03/22 19:06
- その他(プログラミング・Web制作) Pythonのライブラリ、randomについて 3 2022/09/20 14:30
- UNIX・Linux Linux(fedora30)が立ち上がらくなってしまった 1 2023/03/29 11:09
- Windows 10 数年前からWindows10 の Update ができないです。なぜですか? 7 2022/11/09 06:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
【C言語】再帰が時間がかかる...
-
マインスイーパ、自動解析プロ...
-
sil_rew_memのメモリアクセスに...
-
大容量のメモリ確保をスワップ...
-
C言語で、メモリを解放しないで...
-
ターボDelphi 独自カーソルの設定
-
メモリ不足
-
メモリのセグメント違反の解決...
-
メモリの解放の仕方
-
メモリの増加に関して
-
ファミコンって8ビットしかない...
-
エクセルのメモリ使用状況/Appl...
-
「memcpy」と「strcpy」について
-
VBAで2進数を返すプログラムの...
-
CImage::ReleaseDC()のエラーで...
-
C,C++プログラムの強制終了時の...
-
ExitProcessの関数コールについ...
-
GPUプログラミング時の表示用GPU
-
スーパーマリオのパワーアップ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
VBAの配列サイズとメモリに関して
-
「ヒープサイズの設定」て何?
-
C言語における再帰呼び出しの...
-
エクセルVBA 大容量CSVファイル...
-
動的メモリとexit(C言語)
-
エクセルのメモリ使用状況/Appl...
-
メモリが不足しています(VBA)
-
ファイルマッピング関数で失敗
-
大容量のメモリ確保をスワップ...
-
メモリのセグメント違反の解決...
-
EXCEL-VBAにてADOのレコードセ...
-
メモリ不足
-
エクセル キャッシュメモリー...
-
【C言語】再帰が時間がかかる...
-
C#のOutOfMemoryException発生...
-
closeとメモリの開放について
-
バッチファイルでの実行EXEのメ...
-
メモリの解放について VB6 VBA
-
「memcpy」と「strcpy」について
おすすめ情報