- ベストアンサー
プログラムが落ちる。
VisualStudio2005を使用しています。 ダイアログを作成し、配置したコントロールに手動で変数を追加していたんですが、 22個めの変数を追加したところ、プログラムが落ちるようになりました。(ビルドは通ります) エラー内容は、 Run-TimeCheckFailure #2 - Stack around the variable 'dlg' was corrupted DoModalから帰って来たところでエラーが発生しているようですが… 変数の追加作業しかしていませんし、同じ作業の繰り返しだったのに、22個になったとたん落ちる理由がわかりません。 コントロール変数はいくつまで・など、数の制限でもあるのでしょうか。 このエラー内容は、どういった場合に(何が悪いと)発生するのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
リビルドしてみてください たまにIDEが追加されたIDを認識できず正常にコンパイルできないときがあるみたいです。 それでもだめなら resource.hを開いて ID_BUTTON22の値を見てください どっか重複するIDがあったりしませんか? あるならばID_BUTTON22の値を重複しない値に変えてみる。 とりあえず思いつくことはそんなところです。
その他の回答 (1)
- php504
- ベストアンサー率42% (926/2160)
そのエラーは宣言した配列の範囲を超えてアクセスしたときに出ます エラーのでる部分のコードと変数の宣言を確認してみましょう int dlg[10]; で dlg[10] = 1; とかするとエラーになります(dlg[0]~dlg[9]までしか確保されていない)
お礼
No.2の方のアドバイスどおりリビルドしたところ、 プログラムが落ちなくなり、無事に解決しました。 本当にありがとうございました!
補足
さっそくの回答ありがとうございます。 配列ということでしたが、特に配列を使用している心当たりがないため、 コードを補足させて頂きます。 エラー部分は 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; //←★追加 上記の★印部分を追記すると落ち、それらを削除すると正常に戻ります。 たびたびすみませんが、お気づきの事などありましたら 教えて頂けるとありがたいです。
お礼
> リビルドしてみてください > たまにIDEが追加されたIDを認識できず正常にコンパイルできないときがあるみたいです。 ありがとうございます。 おっしゃる通りリビルドをしてみたところ、 プログラムが落ちることはなくなりました。 こんなこともあるんですね。 勉強になりました。ありがとうございました!