c语言中“在xxxx处有未经处理的异常”问题的分析与解决
2016-01-27 16:35
567 查看
在用局部变量写了链表之后,容易出现的问题是链表头的生命期结束。笔者为了避免这个问题用了一个malloc(),结果在运行的问题就出现了如题的问题。查了下资料大致知道怎么解决这种问题了。
笔者一开始的代码是这样的:
然后运行就显示错误。
犹未初始化的指针变量,编译器默认将未初始化的指针初始化为0xcc,而0xcc是被保护的数据区,因此程序崩溃。
抱着试一试的态度,笔者将linked_list_head->next = 0改成了linked_list_head->next = NULL。OK,问题解决!
笔者一开始的代码是这样的:
//CREATE THE HEAD OF A LINKED LIST Word_list* linked_list_head = (Word_list*) malloc(sizeof(Word_list)); linked_list_head->next = 0;<span style="white-space:pre"> </span>//此处 Word_list* previous; Word_list* current; Word_list* pointer_learn; //START TO READ THE DATA FILE* filepointer = fopen(filename, "rb"); Word_list* object = (Word_list*) malloc(sizeof(Word_list)); fread(&object->word, 1, sizeof(object->word), filepointer); fread(&object->explain, 1, sizeof(object->explain), filepointer); fread(&object->example_sentence, 1, sizeof(object->example_sentence), filepointer); fread(&object->count_total, 1, sizeof(object->count_total), filepointer); fread(&object->count_correct, 1, sizeof(object->count_correct), filepointer); fread(&object->rate_correct, 1, sizeof(object->rate_correct), filepointer); object->next = 0; linked_list_head->next = object;<span style="white-space:pre"> </span>//和此处
然后运行就显示错误。
犹未初始化的指针变量,编译器默认将未初始化的指针初始化为0xcc,而0xcc是被保护的数据区,因此程序崩溃。
抱着试一试的态度,笔者将linked_list_head->next = 0改成了linked_list_head->next = NULL。OK,问题解决!
相关文章推荐
- C++设计模式——单例模式
- C++面试(三)
- C语言模拟加载及获取可执行文件目录
- HBase & thrift & C++编程
- C++历史
- C++历史
- C语言 读取文件中特定数据
- C语言中time函数
- 菜鸟进阶之:VC++之Visual Studio中DLL调用实现
- 标准C语言中使用bool类型
- opencv中产生随机数的类CvRNG,以及C++底层随机数方法
- C语言中随机数相关问题
- 关于c++悬垂指针的问题
- C语言的数据类型
- C++四种强制类型转换运算符的联系与区别
- [译]C++, Java和C#的编译过程解析
- C++面试(二)
- Codeforces Round #339 (Div. 2) C.cpp
- C/C++中的值传递,引用传递,指针传递,指针引用传递
- struct/union内存对齐