19

VC++ コンソール アプリケーションに取り組んでいます。

このアプリケーションは、一定期間、Appdata\Roaming フォルダーからファイルを送信します。

何が起こるかは、このクラッシュエラーが発生することです:

Problem signature:
Problem Event Name: APPCRASH
Application Name:   App.exe
Application Version:    1.0.0.2
Application Timestamp:  51c02fa8
Fault Module Name:  PCMeter.exe
Fault Module Version:   1.0.0.2
Fault Module Timestamp: 51c02fa8
Exception Code: c0000005
Exception Offset:   000069eb
OS Version: 6.1.7601.2.1.0.256.48
Locale ID:  1033
Additional Information 1:   0a9e
Additional Information 2:   0a9e372d3b4ad19135b953a78882e789
Additional Information 3:   0a9e
Additional Information 4:   0a9e372d3b4ad19135b953a78882e789

誰でもこの問題を解決するのを手伝ってくれませんか

4

2 に答える 2

51

例外コードc0000005は、アクセス違反のコードです。これは、プログラムが権限のないメモリ アドレスにアクセス (読み取りまたは書き込み) していることを意味します。最も一般的な原因は次のとおりです。

  • 古いポインターへのアクセス。つまり、既に割り当てが解除されているメモリにアクセスしています。このような古いポインター アクセスが常にアクセス違反になるとは限らないことに注意してください。メモリ マネージャがメモリをシステムに返却した場合にのみ、アクセス違反が発生します。
  • 配列の最後を読み取る。これは、長さの配列があり、N要素に index でアクセスする場合です>=N

この問題を解決するには、デバッグを行う必要があります。開発マシンのデバッガーで障害が発生する状況にない場合は、クラッシュ ダンプ ファイルを取得してデバッガーにロードする必要があります。これにより、コードのどこで問題が発生したかを確認し、うまくいけば解決策にたどり着くことができます。意味のあるスタック トレースを表示するには、実行可能ファイルに関連付けられたデバッグ シンボルが必要です。

于 2013-06-18T12:56:43.830 に答える