添加printf语句时,NULL指针异常消失
NULL pointer exception disappears when adding a printf statement
我对以下代码有点不知所措:
T_TERM_LIST term_list = term_list_one($1);
term_list = term_list_add(term_list, $3);
T_TERM term_equality = term_app(str_make("="), term_list);
T_TERM_LIST term_list_2 = term_list_one(term_equality);
$$ = term_app(str_make("not"), term_list_2);
printf("n100 n");
我的问题是关于最后一行,如果我保留printf语句,它会像预期的那样工作,否则如果我删除printf行,我会得到一个空指针异常,我想了解那里发生了什么。
作为添加信息的问题,使用的数据类型是无符号的typedefs和无符号的列表。
此外,该代码被嵌入到YACC文件中,该文件可以解释共享代码中的符号$n。
正如@chux建议我复制&粘贴我的评论作为我问题的答案。事实上,这是一种经验教训。
我发现代码是由make clean编译的;make与make clean编译的代码不同;make debug添加所有用于调试的标志。前者的结果是预期的,而空指针引用是在后一种情况下获得的。因此,我认为我们可以通过指出使用valgring和gdb是解决我提出的问题的好选择来结束这个问题。
非常感谢!
相关文章:
- 尝试使用智能指针时引发异常
- 获取指向派生类的指针在 C++ 中以运行时异常结束
- C++指针算术:对齐异常 (0x801)
- 如何避免自定义 STL 向量类的智能指针 delete[] 异常?
- free():在有效指针异常中-使用流读取巨大文件时
- 封送指向结构异常"cannot Read or Write protected memory"的指针数组的指针数组
- 将一个数组复制到函数内的另一个数组时的运行时指针异常
- dynamic_cast指针异常捕获
- 动态指针引用数组由三元运算符返回值,但有异常
- 异常未手动 - 这是空指针C++
- 启用优化时的堆栈指针比较异常
- 构造函数中的异常:init() 方法、指针、大型 try/catch 或
- Null指针异常(int Vs char)
- 添加printf语句时,NULL指针异常消失
- 为什么 std::shared_ptr 取消引用不会引发空指针异常(或类似异常)?
- 使用函数指针C++异常:访问冲突执行位置0x00000000
- 指针异常处理
- 在JNI对话框生成器调用中出现空指针异常
- 由于图形卡导致空指针异常
- 抛出自定义空指针异常