我正在调试一个链接商业API库(在Linux下)的程序。我正在使用valgrind memcheck,因为我遇到了奇怪的行为,这可能是由于超出分配的内存块的写入:
valgrind --tool=memcheck --error-limit=no --log-file=memcheck.log ./executable
然而,跳到我眼前的第一件事是
的许多错误Use of uninitialised value of size (4/8/16)
Invalid read of size (4/8/16)
Conditional jump or move depends on uninitialised value(s)
其中一些(但不是全部)发生在__intel_sse2_strcpy
或__intel_sse2_strlen
中。此外,根据valgrind,有明确的内存泄漏。
出现在图书馆里。当我编译库中附带的一个示例时,它们也会出现,因此它们不是我的编程错误。此外,它们始终与库的不同版本一起出现。由于该库是封闭源的,我似乎无法澄清错误是否致命。
实际上,这使我很难确定自己潜在的错误。看到这么多警告我有点意外,因为我倾向于修复自己的程序,直到memcheck不再打印这些程序(至少在我给它之前)。问题是:我可以将这些错误视为保存忽略,它们是否通常出现在打包软件中,还是可能是误报(例如因为库是使用优化编译的)?
答案 0 :(得分:0)
我会说: