Valgrind "Условный переход или перемещение зависит от неинициализированных значений" Ошибка - PullRequest
8 голосов
/ 06 ноября 2010

Я получаю много ошибок, когда 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);
}

Сама ошибка находится в строке while ().vasm_sourceline_info - структура двусвязного списка.Код ~ работает ~, но эта ошибка вызывает беспокойство.Есть ли что-то еще в коде, растоптавшем память, или указанная выше функция имеет какой-то недостаток?

Ответы [ 2 ]

14 голосов
/ 06 ноября 2010

Компиляция с выключенной оптимизацией (-O0).Запустите valgrind с --track-origins=yes, чтобы определить источник ошибок.См. здесь для получения дополнительной информации.

6 голосов
/ 06 ноября 2010

Нет ничего плохого в коде как таковом, но если бы поле next одной из строк не было инициализировано (предположительно, поле next последней строки), это могло бы объяснить сообщение.

...