アプリ版:「スタンプのみでお礼する」機能のリリースについて

VisualStudio2005を使用しています。
ダイアログを作成し、配置したコントロールに手動で変数を追加していたんですが、
22個めの変数を追加したところ、プログラムが落ちるようになりました。(ビルドは通ります)

エラー内容は、
Run-TimeCheckFailure #2 - Stack around the variable 'dlg' was corrupted

DoModalから帰って来たところでエラーが発生しているようですが…

変数の追加作業しかしていませんし、同じ作業の繰り返しだったのに、22個になったとたん落ちる理由がわかりません。

コントロール変数はいくつまで・など、数の制限でもあるのでしょうか。
このエラー内容は、どういった場合に(何が悪いと)発生するのでしょうか。

A 回答 (2件)

リビルドしてみてください


たまにIDEが追加されたIDを認識できず正常にコンパイルできないときがあるみたいです。

それでもだめなら
resource.hを開いて
ID_BUTTON22の値を見てください
どっか重複するIDがあったりしませんか?
あるならばID_BUTTON22の値を重複しない値に変えてみる。

とりあえず思いつくことはそんなところです。
    • good
    • 0
この回答へのお礼

> リビルドしてみてください
> たまにIDEが追加されたIDを認識できず正常にコンパイルできないときがあるみたいです。

ありがとうございます。
おっしゃる通りリビルドをしてみたところ、
プログラムが落ちることはなくなりました。

こんなこともあるんですね。
勉強になりました。ありがとうございました!

お礼日時:2008/01/06 19:12

そのエラーは宣言した配列の範囲を超えてアクセスしたときに出ます


エラーのでる部分のコードと変数の宣言を確認してみましょう
int dlg[10];

dlg[10] = 1;
とかするとエラーになります(dlg[0]~dlg[9]までしか確保されていない)

この回答への補足

さっそくの回答ありがとうございます。
配列ということでしたが、特に配列を使用している心当たりがないため、
コードを補足させて頂きます。

エラー部分は

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; //←★追加

上記の★印部分を追記すると落ち、それらを削除すると正常に戻ります。
たびたびすみませんが、お気づきの事などありましたら
教えて頂けるとありがたいです。

補足日時:2008/01/04 12:05
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/01/06 19:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!