添加printf语句时,NULL指针异常消失

NULL pointer exception disappears when adding a printf statement

本文关键字:指针 异常 消失 NULL printf 语句 添加      更新时间:2023-10-16

我对以下代码有点不知所措:

  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是解决我提出的问题的好选择来结束这个问题。

非常感谢!