私はこのような構造アクセス違反実行時エラーが発生するのはなぜですか?
typedef struct fpinfo
{
unsigned long chunk_offset;
unsigned long chunk_length;
unsigned char *fing_print;
}fpinfo;
typedef struct Hash_Entry {
struct Hash_Entry *next; /* Link entries within same bucket. */
unsigned namehash; /* hash value of key */
struct fpinfo fp;
} Hash_Entry;
を持っている。ここでfing_print配列から
unsigned int h;
h = (he.fp.fing_print[0] << 2 | (he.fp.fing_print[1] & 0xC0) >> 6) & 0x3FF;
を10 MSBを抽出するために、次のコード行は、私は、ファイルの内容を読み取ることによって、彼のデータメンバを初期化する方法であります
while(fscanf(rd,"%ul,%ul,%X",&test_st.fp.chunk_offset,&test_st.fp.chunk_length,&test_st.fp.fing_print) !=EOF)
{
....
}
VC 2010は、エラーを与える:
htable.exeの0x013217f8の処理されない例外:0xC0000005:0xCCccccccの読み取りアクセス違反。
何が問題なのですか?
ファイルからポインタ値を読み取ろうとしています。それはうまくいかないでしょう。あなたは文字列を読む必要があります。それを読む前に、test_st.fp.fing_printがmalloc()で初期化されていることを確認してください。 –