Valgrind"条件跳转或移动取决于未初始化的值"错误

Tim*_*bin 8 c valgrind linked-list

valgrind说"条件跳转或移动取决于未初始化的值",我收到很多错误.

下面是其中一个块.所有这些都是相似的:

vasm_sourceline_info_t* line = asmState->firstLine;
if (line == NULL) return;
while ((line = line->next) != NULL)
{
   printf ("[%s(%i)] %s\n", line->fileName, line->lineNumber, line->data);
}
Run Code Online (Sandbox Code Playgroud)

错误本身位于while()行.vasm_sourceline_info是一个双重链表结构.代码〜工作〜但这个错误令人担忧.代码中是否存在其他内容,或者上述函数是否存在某些缺陷?

Mat*_*ner 14

使用优化OFF(-O0)进行编译.运行valgrind --track-origins=yes以确定错误的来源.请看这里了解更多.


sep*_*p2k 6

代码本身没有任何问题,但是如果其中一个行的next字段尚未初始化(可能是最后一行的next字段),则可以解释该消息.