C语言调试时出现”Unhandled exception 0xC0000005;Access Violation“,是怎么回事呢?

fengzhiyiASD 2012-06-22 07:19:28
C语言调试时出现”Unhandled exception 0xC0000005;Access Violation“,是怎么回事呢?
语法没错,调试时输入后,跳出一个提示“Unhandled exception 0xC0000005;Access Violation”
直接运行时,输入后,自动停止程序。
这是怎么回事呢?求大家指导指导!!!先谢了!!!



完整代码可看这里 http://bbs.bccn.net/viewthread.php?tid=372077&extra=page%3D1&frombbs=1
...全文
36231 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
smsgreenlife 2012-06-23
  • 打赏
  • 举报
回复
数组越界
AnYidan 2012-06-23
  • 打赏
  • 举报
回复
违法读写内存
十八道胡同 2012-06-22
  • 打赏
  • 举报
回复
就是使用了未初始化的 变量,你可以一个一个检查下。
fengzhiyiASD 2012-06-22
  • 打赏
  • 举报
回复
有那么严重吗?
N0bug 2012-06-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
可以改吗?如果可以,怎么改呢?希望你能指导下,我不是很熟,以前都是做些很短了,没做过这么长的,这是第一次。。。
[/Quote]
你这个问题不少 要改起来就是全改
fengzhiyiASD 2012-06-22
  • 打赏
  • 举报
回复
可以改吗?如果可以,怎么改呢?希望你能指导下,我不是很熟,以前都是做些很短了,没做过这么长的,这是第一次。。。
N0bug 2012-06-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
就是查不出,所以才来请教的,对于查语法错误还好说,可是这个都没语法错误,纠结很久了,求指教!!!
[/Quote]
问题很多 我先说你的第一处崩溃:来自这里:
typedef        struct    BTNode            // B树结点                        
{
int keynum; // 每个结点关键字个数
struct BTNode *parent; // 父亲指针
KeyType key[m+1]; // 关键字数组,0号单元未用
struct BTNode *ptr[m+1]; // 子数指针
Record *rec[m+1]; // 记录指针,0号单元未用
}BTNode,*BTree; // B树节点类型和B树类型
typedef BTree Library;

注意Library是一个指针类型
然后你的所谓初始化为空
void    InitLibrary(Library L)
// 初始化书库L为空书库。
{
L = NULL;
}

其实只是把这个指针改写为空,注意你是把形参L改写为空,实参并没有变。所以你主函数的这句话:
    InitLibrary(L);            // 初始化书库L

没有达到你的目的 里面的L仍然没有被初始化
所以你经过下面的引用L就出错,例如加入新书号:
        case 1:    // 图书入库                    
while(in != 'M' && in != 'm')
{
B = (BookType)malloc(sizeof(BookNode));
B->reader = NULL; // 下一个借阅者指针置空
printf("\n\n\t请输入要入库的书号:");
scanf("%d",&B->booknum);
res = SearchBTree(L, B->booknum); // 查找入库书号

在实现里面 你仅仅检测p是否是空,但是此时p填充的是未初始化的值(在VC6上 debug模式0xcccccccc) 所以之后出错。
 int        i = 1;
BTree p = T, q = NULL; // 初始化,p指向待查结点,q指向p的双亲
int found = FALSE;
while(p && !found)
{
i = Search(p, k); // 查找k的位置使p->key[i]<=k<p->key[i+1]
if(i> 0 && k == p->key[i]) found = TRUE;
else{ // 未找到,则查找下一层
q = p;
p = p->ptr[i];
}
}
fengzhiyiASD 2012-06-22
  • 打赏
  • 举报
回复
就是查不出,所以才来请教的,对于查语法错误还好说,可是这个都没语法错误,纠结很久了,求指教!!!
xunxun 2012-06-22
  • 打赏
  • 举报
回复
往回查吧,T没初始化导致p没初始化

然后就没有然后了

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧