- ベストアンサー
MFCでプログラムを組んだのですがエラーが出て困っています
- MFCでプログラムを組んだのですがエラーが出て困っています。処理内容は正常に行われますが、ダイアログを閉じる際にエラーが発生します。「問題が発生したため、MFcalculation.exeを終了します。ご不便をおかけして申し訳ありません」というエラーメッセージが表示されます。
- プログラムは正常に動作しており、条件に応じて処理が実行されます。しかし、ダイアログを閉じる際にエラーが発生し、プログラム名のMFcalculation.exeが終了するエラーメッセージが表示されます。
- MFCで組んだプログラムがエラーを出して困っています。処理自体は問題なく行われますが、ダイアログを閉じる際にエラーが発生し、MFcalculation.exeが終了します。ご不便をおかけして申し訳ありません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 デバッグしているときに、ボタンが三つあるダイアログは表示されませんでしたか? そこで真ん中のボタンを押すと、実際にどこで落ちているのかがわかるのですが・・・ 補足していただいたメッセージを見る限りでは、やはりメモリ例外ですので、 ・解放し忘れてる ・戻り値がNULLだった場合、そこでエラーとせずに、その変数を参照して何かしようとしてる ということが可能性としてあげられます。 もし、戻り値判定のロジックを入れてなければ、入れてみてください。 あと、量が多くなければ、テキストボックスの処理をしている関数のコードを見せていただければ、こちらでトレースも出来ますが・・・
その他の回答 (3)
- vespire
- ベストアンサー率32% (34/104)
お返事遅くなり、申し訳ありません。 >malloc関数を使ってないんで大丈夫だと思います malloc使ってなくても、メモリ例外が起こることはあります。 実際に最近起こりました(起こしました(笑)) ん~・・・やっぱり見ないとわからないのですが、一度別の名前でプロジェクトを作り直してみてはいかがでしょうか? あまりお役に立てず、申し訳ないm(_ _)m
お礼
またまた返事が遅くなってしまい申し訳ありません。 それでなんですが何故かエラーがでなくなりました。 プログラム内容を変えようと思いましてバックアップをとって内容を変えていたんです。それで新しい機能を追加することになりまして、プログラム改良後にちゃんと動きましたので(でも相変わらずエラーは出る)、バックアップの方にもその機能を付けようと思い命令内容をコピーして貼り付けてみるとエラーがなくなったのですよ。 はっきりいって原因が全くわかりません。気になることといえば実行ファイルが見つからずフルリンクを行ってたことぐらいですが、他のプログラムはフルリンクを行ってもエラーが消えません。 本当に不思議です・・・。
- z64423
- ベストアンサー率53% (26/49)
使ってる Windows のバージョンと SP に対応したシンボルファイルを MS からダウンロードしてきてインストールしましょう。 何が起きているか、少しは見えてくると思いますよ。 VC++ でデバッガを起動したときに、デバッグ・ウィンドウに 'ntdll.dll' をロードしました、合致するシンボル情報は見つかりません でした。 'C:\WINDOWS\…\kernel32.dll' をロードしました、合致するシンボル 情報は見つかりませんでした。 とメッセージがでますが、シンボルをインストールすれば、 これが出なくなります。 「だから??」、、、 Windows プログラミングのデバッグでは必需品ですから、 インストールしましょう。
お礼
インストールできませんでした…。 でもそんなものがあるとは知りませんでした。 ありがとうございました。
- vespire
- ベストアンサー率32% (34/104)
こんばんは。 うーん、このメッセージだけではわからない^^; Debug版で動かしてみてください。 詳細なメッセージがでると思いますよ。 #思いつくところでは、newしたポインタをdeleteし忘れたりとか・・・(最近やっちゃいましたが(笑))
補足
それも以前やったのですが、エラーメッセージの意味がわからないんですよ。メッセージは次のようなものです。 ハンドルされてない例外はMFcalculation.exe(KERNEL32.DLL)にあります:0xC0000005: Access Violation。 例外処理 (初回) は MFcalculation.exe (KERNEL32.DLL) にあります: 0xC0000005: Access Violation。 何かわかることがあればお願いしますm(__)m
補足
先程はお礼も言わず申し訳ありません。親切に回答していただきありがとうございます。 デバッグしているときに、ボタンが三つあるダイアログは表示されなかったと思います。 メモリの開放についてなんですが、malloc関数を使ってないんで大丈夫だと思います。自動変数は計算機自身が自動的にメモリ確保開放を行ってくれるはずがそこで問題が起こっている可能性もありますか? 私もメモリ関係の問題なのだとは思うんです。プログラムを起動して何も処理を行わずにプログラムを終了させてもエラーが出ますから。一応そのキャンセルボタンを押した時にテキストボックスの内容を次回起動時に読み込ますように設定ファイルとして保存させる処理をさせてからプログラムが終了するようにしているのですが、その処理に問題はないように思いますので(その処理をなくしてみてもエラーが出た)恐らく処理内容ではなく他の部分によるように思います。