2010-11-22 25 views
0

IntellitracTCPIP.exeの0x523d14cf(msvcr100d.dll)で処理されない例外:0xC0000005:0x00000008という場所を読み取るアクセス違反。0x523d14cf(msvcr100d.dll)での未処理の例外?

このエラーの原因は何ですか?それを解決する方法

+1

十分な情報がありません。テストケースを教えてください。 – OmnipotentEntity

+1

またはスタックトレース? – wj32

+1

問題を再現する最小限のコードスニペットですか? –

答えて

0
0xC0000005: Access violation reading location 0x00000008. 

これは不良ポインタを示しています。ポインタは、0x00000008のような低いアドレスへのポイントを示していません。これについて十分な情報を与えていない場合は、デバッガでプログラムを実行してみてください。

4

あなたが読もうとしているアドレスには、4バイトの整数からなる構造体があることが示唆されています。あなたはその構造体型へのポインタを持っていますが、そのポインタはnullです。あなたのプログラムは3番目の整数フィールドのオフセットを読み取ろうとしています - 8番目の整数フィールドのオフセットは8になります。それをヌルポインタアドレス0に加えれば0x00000008になります。 (それはより小さいまたはより大きい型の構造体、または配列さえできますが、私の経験では4バイト整数が最もそうであると言います)

エラーメッセージは、問題のコード行がmsvcr100d.dllに属していることを示します。それはあなたのコードではありません。あなたはおそらくいくつかのCランタイム関数にヌルポインタを渡しています。この関数は、有効なポインタを提供し、構造体の3番目のフィールドを読み込もうとしましたが、そのポインタが有効でないため、OSは読み込みを傍受して例外をスローしました。

エラーが発生する前にプログラム内の最後のコード行を探します。これを行うには、コールスタックを使用して、プログラムがクラッシュしたポイントに到達するために行った一連の関数呼び出しを確認できます。あなたの機能の1つを見つけるまで、リストを下ろしてください。あなたは何か指針を見ますか?あなたはその関数を呼び出すときにそれらがすべて有効であることを保証できますか?そうでなければ、その関数を呼び出すはずですか?ポインタが有効であることを確認するか、nullポインタで関数を呼び出さないようにします。