- 締切済み
エラー?メッセージ
4 [main] j00 2164 _cygtls::handle_exceptions: Exception: STATUS_STACK_OVERFLOW 1122 [main] j00 2164 open_stackdumpfile: Dumping stack trace to j00.exe.stackdump 実行すると↑のエラー?メッセージがでます。 どうすれば、↑のメッセージを消すことができるのでしょうか?教えてくださいm( _ _ )m 一応、「j00」ってのはソースファイル名です。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- crew21
- ベストアンサー率26% (58/222)
「STATUS_STACK_OVERFLOW」これが答えですね。スタックオーバーフローということです。 スタック領域はご存じですよね。 関数に引数を持たせたり、内部変数を持ったりしたときに消費されてゆくメモリ領域です。 スタック領域のサイズは、環境変数やコンパイルスイッチなどで変更できますが、当然有限な領域で、一般に狭い(KB単位)です。 なので、例えばですが、10KBの大きさを持つスタック領域に対して、 ある関数内で、 void aaa() { char a[5*1024]; ... } などとやってしまうと、いきなりスタック領域を5KB、即ち半分使ってしまうことになります。 昔はメモリが貧弱だったので、スタック領域(の狭さ)を意識してプログラミングすることが多かったのですが、 最近のメモリの増大に伴い、スタック領域も増え、それを意識してプログラミングすることはあまりなくなってきた傾向があります。 たまたまあなたのプログラムが、スタック領域を使い切るほどのことをしてしまったのでしょう。 なので、解決策としては、マニュアル等を読んで、環境変数やコンパイルスイッチなどでスタック領域を増やすか、 ご自分のプログラムを見直して、スタックの無駄遣いが無いかを点検することです。 一般に、なすべきは後者です。 失礼ながらきちんと設計していれば、スタックを使い切るということは、そうそうないことなので。
- asuncion
- ベストアンサー率33% (2127/6289)
その実行ファイルに対応するソースコードを見せていただけますか?