• ベストアンサー

プログラムが落ちる。

VisualStudio2005を使用しています。 ダイアログを作成し、配置したコントロールに手動で変数を追加していたんですが、 22個めの変数を追加したところ、プログラムが落ちるようになりました。(ビルドは通ります) エラー内容は、 Run-TimeCheckFailure #2 - Stack around the variable 'dlg' was corrupted DoModalから帰って来たところでエラーが発生しているようですが… 変数の追加作業しかしていませんし、同じ作業の繰り返しだったのに、22個になったとたん落ちる理由がわかりません。 コントロール変数はいくつまで・など、数の制限でもあるのでしょうか。 このエラー内容は、どういった場合に(何が悪いと)発生するのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.2

リビルドしてみてください たまにIDEが追加されたIDを認識できず正常にコンパイルできないときがあるみたいです。 それでもだめなら resource.hを開いて ID_BUTTON22の値を見てください どっか重複するIDがあったりしませんか? あるならばID_BUTTON22の値を重複しない値に変えてみる。 とりあえず思いつくことはそんなところです。

-Kororon-
質問者

お礼

> リビルドしてみてください > たまにIDEが追加されたIDを認識できず正常にコンパイルできないときがあるみたいです。 ありがとうございます。 おっしゃる通りリビルドをしてみたところ、 プログラムが落ちることはなくなりました。 こんなこともあるんですね。 勉強になりました。ありがとうございました!

その他の回答 (1)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

そのエラーは宣言した配列の範囲を超えてアクセスしたときに出ます エラーのでる部分のコードと変数の宣言を確認してみましょう int dlg[10]; で dlg[10] = 1; とかするとエラーになります(dlg[0]~dlg[9]までしか確保されていない)

-Kororon-
質問者

お礼

No.2の方のアドバイスどおりリビルドしたところ、 プログラムが落ちなくなり、無事に解決しました。 本当にありがとうございました!

-Kororon-
質問者

補足

さっそくの回答ありがとうございます。 配列ということでしたが、特に配列を使用している心当たりがないため、 コードを補足させて頂きます。 エラー部分は void CProject::Test(){ CTestDlg dlg; dlg.DoMoal(); } 上記でDoModalから帰ってきた部分です。 変数の追加は以下のようにしています。 -------------実装ファイル--------------------- void CTestDlg::DoDataExchange(CDataExcange* pDX){  DDX_Control( pDX, IDC_BUTTON1, m_vxStanderd)  :(略)  DDX_Control( pDX, IDC_BUTTON21, m_vxCustom5)  DDX_Control( pDX, IDC_BUTTON22, m_vxCustom6) //←★追加 } -------------ヘッダーファイル------------------ public:  CButton m_vxStanderd;  :(略)  CButton m_vxCustom5;  CButton m_vxCustom5; //←★追加 上記の★印部分を追記すると落ち、それらを削除すると正常に戻ります。 たびたびすみませんが、お気づきの事などありましたら 教えて頂けるとありがたいです。

関連するQ&A