奇怪的valgrind错误

时间:2017-05-30 01:47:42

标签: c linux valgrind

当内存使用Valgrind调试我的程序时,出于通常的原因我会受到以下错误的欢迎(有很多错误):

==9895== Invalid read of size 4
==9895==    at 0x10D6C1: Shell (vshell.c:903)
==9895==    by 0x113608: exec_wrap (vib.c:111)
==9895==    by 0x111E8A: sm_thread (vproc.c:123)
==9895==    by 0x1107EC: tstart (vsched.c:130)
==9895==    by 0x55B3A8F: ??? (in /lib/x86_64-linux-gnu/libc-2.24.so)
==9895==  Address 0x5973e90 is 134,800 bytes inside a block of size 135,168 alloc'd
==9895==    at 0x4C300B6: memalign (vg_replace_malloc.c:858)
==9895==    by 0x1106D0: alloc_thread (vsched.c:95)
==9895==    by 0x110825: sthread (vsched.c:144)
==9895==    by 0x112030: Exec (mproc.c:183)
==9895==    by 0x1137D9: Execute (vlib.c:166)
==9895==    by 0x10D9A5: bshell (shell.c:965)
==9895==    by 0x111E8A: smain_thread (mproc.c:123)
==9895==    by 0x1107EC: tstart (vsched.c:130)
==9895==    by 0x55B3A8F: ??? (in /lib/x86_64-linux-gnu/libc-2.24.so)

探索通常的地方(例如,Valgrind的手册和Google)并没有对这可能发生的原因有任何见解。据我所知,从错误消息中分配的块比地址所指的更大,所以我不理解"抱怨"。正如我最初所说,有许多消息与此类消息完全相同但在代码的不同部分 - 这只是一个指示性错误。值得注意的是,当程序退出时,根据Valgrind没有实际泄漏 - 只是这些错误。任何人都可以提供任何有关为什么会发生这种情况

1 个答案:

答案 0 :(得分:0)

Address 0x5973e90 is 134,800 bytes inside a block of size 135,168 alloc'd 显然,您在地址0x5973e90上分配的内存少于所需内存 当你还没有提供任何代码时,几乎没有办法帮助你的程序。如果大小符合要求,请检查您的分配。