Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Valgrind报告SDL2内存泄漏_C_Sdl_Valgrind - Fatal编程技术网

C Valgrind报告SDL2内存泄漏

C Valgrind报告SDL2内存泄漏,c,sdl,valgrind,C,Sdl,Valgrind,这是我第一次与vlagrind合作,我想知道这些错误是否是令人担忧的,我应该担心还是忽略它们。我的程序只是一个简单的SDL22D太空游戏,我不知道这些内存泄漏是从哪里来的 ==9173== Conditional jump or move depends on uninitialised value(s) ==9173== at 0xA0E1343: ??? (in /usr/lib/x86_64-linux-gnu/libLLVM-10.so.1) ==9173== by 0xA0

这是我第一次与vlagrind合作,我想知道这些错误是否是令人担忧的,我应该担心还是忽略它们。我的程序只是一个简单的SDL22D太空游戏,我不知道这些内存泄漏是从哪里来的

==9173== Conditional jump or move depends on uninitialised value(s)
==9173==    at 0xA0E1343: ??? (in /usr/lib/x86_64-linux-gnu/libLLVM-10.so.1)
==9173==    by 0xA0215E7: llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (in /usr/lib/x86_64-linux-gnu/libLLVM-10.so.1)
==9173==    by 0x9E8BD75: llvm::FPPassManager::runOnFunction(llvm::Function&) (in /usr/lib/x86_64-linux-gnu/libLLVM-10.so.1)
==9173==    by 0x9E8BFF2: llvm::FPPassManager::runOnModule(llvm::Module&) (in /usr/lib/x86_64-linux-gnu/libLLVM-10.so.1)
==9173==    by 0x9E8C49F: llvm::legacy::PassManagerImpl::run(llvm::Module&) (in /usr/lib/x86_64-linux-gnu/libLLVM-10.so.1)
==9173==    by 0xAFD7B34: llvm::MCJIT::emitObject(llvm::Module*) (in /usr/lib/x86_64-linux-gnu/libLLVM-10.so.1)
==9173==    by 0xAFD7F1D: llvm::MCJIT::generateCodeForModule(llvm::Module*) (in /usr/lib/x86_64-linux-gnu/libLLVM-10.so.1)
==9173==    by 0xAFD86AD: llvm::MCJIT::finalizeObject() (in /usr/lib/x86_64-linux-gnu/libLLVM-10.so.1)
==9173==    by 0xAF9C87F: LLVMGetPointerToGlobal (in /usr/lib/x86_64-linux-gnu/libLLVM-10.so.1)
==9173==    by 0x84B0041: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
==9173==    by 0x84A49EF: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
==9173==    by 0x8490937: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
这里提到的是一些内存泄漏。但我已经检查了我的代码很多次了,我想它一定在SDL库中

17 bytes in 1 blocks are definitely lost in loss record 10 of 1,977
==9173==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==9173==    by 0x4EC85A6: _XlcDefaultMapModifiers (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==9173==    by 0x4EC897A: XSetLocaleModifiers (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==9173==    by 0x4923824: ??? (in /home/coder/Desktop/game/libSDL2-2.0.so.0)
==9173==    by 0x492A45A: ??? (in /home/coder/Desktop/game/libSDL2-2.0.so.0)
==9173==    by 0x48FCF6A: ??? (in /home/coder/Desktop/game/libSDL2-2.0.so.0)
==9173==    by 0x486C8E6: ??? (in /home/coder/Desktop/game/libSDL2-2.0.so.0)
==9173==    by 0x10972A: main (projekt.c:115)
==9173== 
==9173== 112 (56 direct, 56 indirect) bytes in 1 blocks are definitely lost in loss record 1,922 of 1,977
==9173==    at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==9173==    by 0x880D07E: ???
==9173==    by 0x8488C3B: ???
==9173==    by 0x84737A5: ???
==9173==    by 0x847386C: ???
==9173==    by 0x8474479: ???
==9173==    by 0x8437A33: ???
==9173==    by 0x843A35C: ???
==9173==    by 0x84352BC: ???
==9173==    by 0x83F8357: ???
==9173==    by 0x841C33D: ???
==9173==    by 0x8419C76: ???
==9173== 
==9173== LEAK SUMMARY:
==9173==    definitely lost: 73 bytes in 2 blocks
==9173==    indirectly lost: 56 bytes in 1 blocks
==9173==      possibly lost: 0 bytes in 0 blocks
==9173==    still reachable: 330,333 bytes in 2,678 blocks
==9173==         suppressed: 0 bytes in 0 blocks

有人能解释一下这些错误是什么意思吗?

不幸的是,这种库总是有一些漏洞。您可以在SDL/OpenGL/任何您想要的图形库上查看更多详细信息或找到更多答案,但长话短说,这几乎总是会发生的。 您应该关注的所有漏洞都可以追溯到您自己编写的代码


我建议启动
valgrind--leak check=full--show reachable=yes
而不仅仅是
valgrind
,它将更精确地显示您的错误。

感谢您的帮助。所以这些漏洞不是在我的代码中,而是在库本身?我应该怎么做:条件跳转或移动取决于未初始化的值。您可以使用Valgrind的--track origins=yes来处理条件跳转(ifs、循环)中的未初始化值