OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

Access Violationについて

  • すぐに回答を!
  • 質問No.124880
  • 閲覧数3448
  • ありがとう数4
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 10% (4/39)

VC++6.0 MFCダイアログベースアプリを作成しているものです。

メインダイアログの他に別ダイアログを追加しようと思い、
新規にクラスを追加し、ダイアログを作成しました。
メインダイアログに終了ボタンがあり、押下することにより、
OnClose()を呼び、アプリを終了させています。
ここで、終了ボタンを押すと、以下のメッセージが表示されます。

ハンドルされていない例外は*****にあります。
0xC0000005: Access Violation

新規追加したクラス宣言部をコメントアウトすると、例外が発生しませんでした。

VC初心者でして、このエラーがメモリー関係では?とは想像がつくのですが、
どのようにアプリに影響しているのかがわかりません。
Access Violationが発生した時の対処法とかクラスを新規追加したことによる、
影響範囲がどの程度あるのか等、ご教授願えませんでしょうか?

よろしくお願い致します。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル11

ベストアンサー率 58% (114/195)

VC++のデバッガを使いましょう。 デバッグモードでビルドして、デバッグ-実行 してやればAccess Violationした位置でデバッガがブレークを掛けてくれるはずです。 その後、デバッガのスタックトレースウィンドウから呼び出し元をたどっていき、Access violationの原因となったコードを探しましょう。 #感じ的に初期化/確保されていないポインタ相手にアクセスしたっぽいですが・・ ...続きを読む
VC++のデバッガを使いましょう。
デバッグモードでビルドして、デバッグ-実行
してやればAccess Violationした位置でデバッガがブレークを掛けてくれるはずです。
その後、デバッガのスタックトレースウィンドウから呼び出し元をたどっていき、Access violationの原因となったコードを探しましょう。

#感じ的に初期化/確保されていないポインタ相手にアクセスしたっぽいですが・・・

また、Access Violationなどの場合、スタック破壊が起こっている場合もあります。そういう場合はブレークポイントをいくつか設定して、実行してAccess Violation位置を探しましょう。


>クラスの新規追加による影響
ちゃんと作られたプログラムに変なクラスを突っ込んだ場合は当然影響が出ます。
逆にちゃんと作られたクラスを追加した場合に問題が発生した場合、それまでのプログラムに表面化しなかった問題があった、というだけの事です。作ってる方も人間ですから完全なものは作れないですし・・・(^^;

>影響範囲
さまざまかと(^^;
C++例外でトラップしてやればAccess Violationもトラップしてやる事は出来ます(参考URLの17章参照)が、通常、起こった時点でアルゴリズム的に問題があると思います。

仕事などでやっている場合は
Purify(http://www.sra.co.jp/Rational/purify/purifyNT.html#WhatIsPurify)やBoundsChecker(http://www.numegajapan.com/products/vc.htm)などのプログラムチェッカを導入するのも手ですね。

#蛇足
OnClose()後に例外が発生するという事は終了処理回りに不備があるのでしょう。
確保したメモリを開放していなかったり、逆に既に開放しているメモリをもう一度開放しようとしていたり・・・
ある程度経験を積めば、メモリ周りのトラブルの対処(というよりトラブルを起こさないためのプログラムか)方法も身につくかと。
確かにこの辺のプログラムスタイルについての解説はあまり無いのも確かですが、まったく無いわけでもありません。

・Effective C++
・More Effective C++
・Writing Solidcode
・Code Complete

あたりが参考になるかと思います。
また、Access Violation(というよりx86のプロテクトモードの例外機構)については
・はじめて読む486
が参考になるかと思います。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ