
OS:WindowsXP
コンパイラ: MinGW gcc 3.3.3
gccで、スタックオーバーフローの検出を行いたいと思っています。
gcc -v --helpで見ると
> -fstack-check Insert stack checking code into the program
と書かれているので、そのように指定して、無限に自分を呼び続ける再帰のプログラムを走らせてみました。
gcc -fstack-check testS2.c
ですが、オプションを指定しない時と同じように突然何の前触れもなく終了してしまいます。
このオプションはスタックを使い切るかどうかをチェックするオプションではないのでしょうか。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
ソースコードを静的に解析してスタックオーバーフローを事前に検知するオプションではなく
生成するプログラムにスタックオーバーフローを検知するプログラムを紛れ込ませて
もし、スタックオーバーフローが起きたらプログラムを強制終了するというオプションだと思いますよ。
> Insert stack checking code into the program
説明として書いてありますしね。
WEB上から拾ってきた文献から察するに、マルチスレッド環境でスタックオーバーフローが
起きた際に正常にプログラムを強制終了させるためのオプションのようです。
シングルスレッドの場合はシステムが強制終了してくれるのでこのオプションをつける必要はないとも書いてありますね。
http://uw713doc.sco.com/cgi-bin/info2html?(gcc)C …
コンパイラに実装されているオーバーフロー関連のチェック機能は
仮にオーバーフローが起こっても安全にプログラムを終了させるような
プログラムコードをコンパイル時に追加する手法が多いです。
(オーバーフローが起こったままプログラムが動作するのはとても危険です。
まじめに検知したいなら静的解析の専門ツール探した方が良いと思いますよ。
Splint
http://lclint.cs.virginia.edu/
ありがとうございます。
説明が悪くて申し訳ありませんでした。
実際にコンパイルして実行しているのですが、そのときにオプションをつけてもつけなくても同じ結果だった、という意味でした。
ご回答からその理由がシングルスレッドだからだということがわかりました。(もっとも、メッセージの一つも出してほしい気はしますが、、これではスタックオーバーフローだから終了したかどうかわからないので。。)
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# gcc のコンパイラオプションについて 2 2022/12/21 17:11
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
- その他(コンピューター・テクノロジー) ブルースクリーンエラーの発生と解決手順 2 2022/10/09 13:05
- その他(プログラミング・Web制作) 十進BASICでの再帰についての質問です。 2 2022/11/18 09:17
- Windows 10 Internet Explorer-11 を削除はしたけれど… 3 2022/06/20 17:54
- 飛行機・空港 エアアジアの予約に関して 1 2022/11/28 09:36
- C言語・C++・C# アセンブラ指令 3 2023/06/17 14:47
- Excel(エクセル) エクセルの編集オプション セル移動 2 2022/04/02 09:19
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- その他(プログラミング・Web制作) ZWCAD CUIXとLISPの関係について 1 2022/09/28 03:07
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba listviewにおけるtextのAli...
-
Arduino nano(アルドゥイーノ ...
-
2値化した画像の黒い部分のピク...
-
プログラミングの問題と解答例...
-
プロダクションコードとは?
-
無限ループ中にある任意のキー...
-
C言語 多次元配列(3次元配列)
-
USBカメラのTWAIN制御について
-
Excel VBA で、データベースフ...
-
Labviewって・・・
-
指定したフォルダーを最前面表...
-
初級者の質問――time_tについて
-
C言語primeについて
-
VB2008 ACCESS 最適化について
-
待ち行列のシミュレーションの...
-
DataGridViewで指定列の背景色...
-
コードプロテクトについて
-
三次元のグラフを書きたいので...
-
プログラミングの問題です。写...
-
Pythonで仮想通貨の自動売買が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba listviewにおけるtextのAli...
-
指定したフォルダーを最前面表...
-
マイコンからプログラムを読み...
-
プロダクションコードとは?
-
2値化した画像の黒い部分のピク...
-
初級者の質問――time_tについて
-
VBA
-
Arduino nano(アルドゥイーノ ...
-
COBOLのS9タイプからXタイプへ...
-
無限ループ中にある任意のキー...
-
世界一美しいソースコード
-
DCOMのアプリで配布用プロ...
-
VC++で作成した図をクリップボ...
-
openGLで物体を半透明にして表...
-
DataGridViewで指定列の背景色...
-
signalハンドラに引数を渡したい
-
C言語→MATLABへの変換で、困っ...
-
VB6 画面サイズ変更について
-
VBAのプログラムが動いているか...
-
c言語 コマンドライン引数
おすすめ情報