Стоит ли беспокоиться о том, что «условный переход или перемещение зависит от неинициализированных значений»?

Если вы использовали Memcheck (из Valgrind), вы, вероятно, будете знакомы с этим сообщением ...

Условный переход или перемещение зависит от неинициализированных значений

Я читал об этом, и это просто происходит, когда вы используете неинициализированное значение.

MyClass s;
s.DoStuff();

Это будет работать, потому чтоs автоматически инициализируется ... Так что, если это так, и это работает, почему Memcheck говорит мне, что он не инициализирован? Должно ли сообщение быть проигнорировано?

Возможно, я неправильно понял, куда меня направляла ошибка. Из руководства Valgrind фактический ошибочный фрагмент кода ...

int main()
{
  int x;
  printf ("x = %d\n", x);
}

Однако в моем коде я не вижу ничего подобного. Однако я заметил, что функция в верхней части трассировки стека, которую Memcheck показывает мне, является виртуальной функцией; может ли это быть как-то связано с этим?

==14446== Conditional jump or move depends on uninitialised value(s)
==14446==    at 0x414164: vimrid::glut::GlutApplication::FinishRender() (GlutApplication.cpp:120)
==14446==    by 0x422434: vimrid::demos::filterdemos::FilterDemo3::Render() (FilterDemo3.cpp:260)
==14446==    by 0x412D3D: vimrid::VimridApplication::UpdateAndRender() (VimridApplication.cpp:93)
==14446==    by 0x4144BA: vimrid::glut::GlutApplication::glutHandleDisplay() (GlutApplication.cpp:201)
==14446==    by 0x41486A: vimrid::glut::GlutApplication::glutCallbackDisplay() (GlutApplication.cpp:277)
==14446==    by 0x54D9FAA: (within /usr/lib64/libglut.so.3.8.0)
==14446==    by 0x54DDA4A: fgEnumWindows (in /usr/lib64/libglut.so.3.8.0)
==14446==    by 0x54DA4A3: glutMainLoopEvent (in /usr/lib64/libglut.so.3.8.0)
==14446==    by 0x54DAEB5: glutMainLoop (in /usr/lib64/libglut.so.3.8.0)
==14446==    by 0x413FF8: vimrid::glut::GlutApplication::Run() (GlutApplication.cpp:112)
==14446==    by 0x41249D: vimrid::Launcher::runDemo(vimrid::VimridSettings&) (Launcher.cpp:150)
==14446==    by 0x412767: vimrid::Launcher::Launch(int, char**) (Launcher.cpp:62)
Обновление 1:

Я взглянул на GlutApplication.cpp: 120, и похоже, что неинициализированная переменная была передана функции в этой строке. Просто!

Ответы на вопрос(6)

Ваш ответ на вопрос