valgrind memcheck条件跳转追溯到brk和sbrk函数

时间:2016-04-20 15:29:23

标签: c valgrind calloc

我一直在寻找类似的帖子,但没有成功。我正在使用一个代码,到目前为止似乎是确定性的,现在正在正常工作。然而,当运行Valgrind memcheck时,我得到数以千计的警告所有引用“条件跳转或移动取决于未初始化的值”。 在跟踪错误时,valgrind会将其追溯到brk和sbrk函数。我不明白为什么会这样?,更重要的是如何修复它?在我的代码的一部分下面。

    navSolutions->channel.satPositions = (fl64 **) calloc(3 , sizeof(fl64*));
    ERRORCHECK(navSolutions->channel.satPositions == NULL)

    navSolutions->channel.satPositionsOld = (fl64 **) calloc(3 , sizeof(fl64*));
    ERRORCHECK(navSolutions->channel.satPositionsOld == NULL)

同样重要的是,在为我分配内存的每个指针调用free()时会发生很多这些调用。 任何帮助都会很棒。提前致谢

作为快速回复的一部分,请求提供额外信息: 大家好,感谢您的快速解答。我的代码代码在Linux Mint 17.2 Cinamon 64位中运行。我也使用以下版本的gcc(Ubuntu 4.8.4-2ubuntu1~14.04.1)4.8.4和valgrind版本3.10.1。我也尝试了Nate Eldredge给出的建议但没有成功。以下是一些valgrind输出

==25494== Conditional jump or move depends on uninitialised value(s)
==25494==    at 0x4669D7: _int_malloc (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
==25494==    by 0x4695C5: calloc (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
==25494==    by 0x40C1F5: initNavSolution (initNavSolutions.c:57)
==25494==    by 0x401714: nav_init (nav_init.c:35)
==25494==    by 0x40107B: main (main.c:38)
==25494==  Uninitialised value was created
==25494==    at 0x4BA9CC: brk (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
==25494==    by 0x490C34: sbrk (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
==25494==    by 0x454793: __libc_setup_tls (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)
==25494==    by 0x4543FD: (below main) (in /home/glonass/Documents/EclipseProjects/pyxis/bin/nav/navexe)

再次感谢所有人

1 个答案:

答案 0 :(得分:2)

我在代码中发现了错误。我的问题是代码是静态构建的,valgrind有问题。在我将所有内容更改为动态链接过程后,一切正常。谢谢大家!!!!