- 締切済み
Visual C++2008でおきたエラーについて
現在VisualC++2008でゲームを作っているのですが、 BGMをつけようと思いプログラムを少し追加したのですが test.exe の 0x005653b1 で初回の例外が発生しました: 0xC0000005: 場所 0x00000060 を読み込み中にアクセス違反が発生しました。 test.exe の 0x005653b1 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x00000060 を読み込み中にアクセス違反が発生しました。 プログラム '[2956] test.exe: ネイティブ' はコード 0 (0x0) で終了しました。 と言ったエラーが出てきてしまい止まってしまいます、とりあえずCtrl+Zで最初の状態にもどしたにもかかわらず実行しようとすると上と同じエラーが出てきてしまい起動できなくなってしまいました、上のエラーはどのようなときに起こるのでしょうか?それとどうすれば回避できるか教えてくださいm(_ _;m) ソースファイルを張りたいのですが2000文字超えているのでむりでした・・・。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- chie65536
- ベストアンサー率41% (2512/6032)
>とりあえずCtrl+Zで最初の状態にもどしたにもかかわらず実行しようとすると上と同じエラーが出てきてしまい起動できなくなってしまいました 追加の前の状態で既に「未初期化のメモリを参照している」など、潜在していて表面化していなかったバグが潜んでいると思われます。 追加前までは、未初期化のメモリが「0」で埋まっていれば「ポインタがヌル(0)なら何もしない」と言う安全対策をしているなどで、バグが表面化せず、例外が発生しないで済んでいたのでしょう。 で、追加作業によって「未初期化のメモリが0ではない状態になってしまう」と「ポインタがヌル(0)なら何もしない」と言う安全装置が働かず、例外が発生して、プログラムが強制終了するようになってしまいました。 ソースコードをCtrl+Zで完全に元に戻したとしても「未初期化のメモリが0ではない状態になってしまった」のまでは元に戻りませんから、ソースコードをCtrl+Zで完全に元に戻しても、例外の発生は回避できません。 まずは「誰が、どこで、未初期化のメモリを参照しているかを突き止める」のが良いでしょう。 未初期化のメモリが「0」で埋まっていると、「ポインタがヌル(0)なら何もしない」と言う安全対策をしているおかげで、なかなか、原因を突き止める事が出来ません。 しかし、今回のように例外が発生してくれるなら、少なくとも「どこで止まってしまうか」は判るので、例外が出てくれた方が、原因を突き止めやすくなります。 今回の件で「気付かなかった潜在バグ」に気付けたのでラッキーだと思いましょう。 >どうすれば回避できるか教えてください 未初期化のメモリを参照しないよう変数やメモリをきちんと初期化しましょう。 配列や変数の範囲を超えて「何もないメモリ」にアクセスしている部分があったら、未初期化のメモリを参照してしまうので、範囲を超えてアクセスしている部分が無いかしらべましょう。
- Tasuke22
- ベストアンサー率33% (1799/5383)
感じでは、データが変数の領域を超えて書き込みされ、 データやらプログラムを壊しているような気がします。 ま、分かりませんけどね。可能性は色々あるでしょう。 デバッガで追うのはどうですか?
お礼
ご返答ありがとうございます(m;_ _)m 無事解決しました
お礼
ご返答ありがとうございます プログラミングを最初から見直し、使っていない関数を削除したら無事直りました ありがとうございました(m;_ _)m