- 締切済み
おかしな現象が発生 問題の関数内のスタックが原因?
VisualC++2005でプログラムを書いているのですが、おかしな現象が発生しまして、皆さんも似たような経験をされたかどうかお聞きしたいです。 C言語の関数の動作テストしているのですが、問題の関数をコールした後、通るべきプログラムを飛ばして、次の行の命令から実行されます。 具体的には、n=a();という関数がありまして、 戻ってきた位置に if (n == 0) { // ------------------ (A) printf("通過すべき場所"); } があり、デバッグの自動変数ではnは0,であるため、「通過すべき場所」が 表示されるはずですが、実行中もでバック中もここを飛ばして、次の行から動作しています。 問題のa()はコールした時はアセンブラのような画面が出てきたので、おかしいなと思ったのですが、(A)の位置にブレークポイントを置きそこまで走らせると、そこで止まり、F11でステップインさせると、飛ばして別の行へいきます。 問題のa()内のスタックが壊れているのでしょうか? もう一度a()の関数を書きなおして、中で定義している配列の大きさなど調べた方が良いのでしょうか?
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6290)
回答No.8
補足
ご回答ありがとうございます。 スタックのサイズはデフォルトがわかりませんが プロパティ 構成プロパティ C/C++ コマンドライン 追加のオプション /F 1000000000 953MBのスタックで約1Gのスタックはできるのでしょうか? また、実行ファイル(exeファイルから)スタック領域がわかる方法があるのでしたら知りたいです。