这可能看起来是一个愚蠢的问题,但 valgrind 默认情况下不会为您提供足够的信息。 Valgrind 报告如下:
==2541== Conditional jump or move depends on uninitialised value(s)
==2541== at 0x401777: process_read.clone.3 (in /home/matt/dev/ocs/client3/a.out)
==2541== by 0x4026B8: obbs_main (in /home/matt/dev/ocs/client3/client)
==2541== by 0x53D1D8B: start_thread (pthread_create.c:304)
==2541== by 0x511D04C: clone (clone.S:112)
我看不到任何明显的东西。 Valgrind -v 也没有帮助。
有没有办法让 valgrind 告诉我哪些值未初始化?
最佳答案
如果您在 valgrind 中使用 --track-origins=yes
标志,它会告诉您首次分配未初始化内存的行号(假设您使用 -g 进行编译)。这通常位于函数开头某处的堆栈分配处。
也尝试使用 -Wall 进行编译。 -Wall 应该在编译时捕获大多数“使用未初始化”错误。
关于c - 如何确定 valgrind 中哪些值未初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8736645/