gpt4 book ai didi

c - 为什么会出现访问冲突运行时错误?

转载 作者:太空宇宙 更新时间:2023-11-04 04:03:34 24 4
gpt4 key购买 nike

我有这个结构

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 数组中提取 10 msb

unsigned int h;
h = (he.fp.fing_print[0] << 2 | (he.fp.fing_print[1] & 0xC0) >> 6) & 0x3FF;

下面是我如何通过从文件中读取内容来初始化数据成员

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。

有什么问题吗?

最佳答案

最可能的原因是 he.fp.fing_print 尚未初始化,因此您的进程在尝试访问其元素时崩溃。要验证,打印出指针的值,或在调试器中检查它。

编辑 fscanf() 代码有两个问题:

  1. 不完全清楚意图是什么,但是 %X&test_st.fp.fing_print 覆盖了指针
  2. 您似乎没有为 test_st.fp.fing_print 分配内存。

关于c - 为什么会出现访问冲突运行时错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8970989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com