...왜 Valgrind는 내 glutCreateWindow 사용을 좋아하지 않습니까? 나는 다음과 같은 코드를 사용하고
169: const char *title = Title.c_str();
170: glutCreateWindow(title);
은 ... Valgrind의 나에게 다음과 같은 ...
==28841== Conditional jump or move depends on uninitialised value(s)
==28841== at 0x6FF7A4C: (within /usr/lib64/libGLcore.so.180.44)
==28841== by 0x6FF81F7: (within /usr/lib64/libGLcore.so.180.44)
==28841== by 0x7289B36: (within /usr/lib64/libGLcore.so.180.44)
==28841== by 0x728A757: _nv000133gl (in /usr/lib64/libGLcore.so.180.44)
==28841== by 0x4EAB9E9: (within /usr/lib64/libGL.so.180.44)
==28841== by 0x4EAEA81: (within /usr/lib64/libGL.so.180.44)
==28841== by 0x4EB1D81: (within /usr/lib64/libGL.so.180.44)
==28841== by 0x4EA782B: glXCreateNewContext (in /usr/lib64/libGL.so.180.44)
==28841== by 0x54DF9AA: fgOpenWindow (in /usr/lib64/libglut.so.3.8.0)
==28841== by 0x54DE062: fgCreateWindow (in /usr/lib64/libglut.so.3.8.0)
==28841== by 0x54DF300: glutCreateWindow (in /usr/lib64/libglut.so.3.8.0)
==28841== by 0x4146CE: vimrid::glut::GlutApplication::Init() (GlutApplication.cpp:170)
을 제공하지만, 초기화되지 않은 무엇인가? 표제 Title.c_str 변수() 및 타이틀의 값으로 초기화된다 생성자 부재 초기화리스트 초기화 반원 ...
class VimridApplication
{
// ...
public:
std::string Title;
// ...
}
VimridApplication::VimridApplication() :
Title("Untitled VimridApplication")
{
// ...
}
class GlutApplication : public VimridApplication
{
// ...
}
문제의 원인을 찾으려고 할 때 --track-origins는 2009 년 1 월 2 일 릴리스 3.4.0의 새로운 기능입니다. 동일한 문제가 있었는데 초기화되지 않은 값은 다음과 같은 이유로 생성되었습니다. libglut의 fgOpenWindow에 스택 할당. 패치 업스트림을 보내는 것 이외에는 많은 것을 할 수 없으므로이를 억제하는 것이 안전합니다. – jwhitlock