Valgrind顯示大小爲8的錯誤的未初始化值。 偶爾,下面的條件跳轉對未初始化值的錯誤。C庫中的Valgrind錯誤?
我所做的只是使用gcc 和內置的vsnprintf附帶的stdC++庫打印格式化的字符串。
這是一種稱爲format的方法,它是自定義字符串類的一部分。 現在是什麼?一切看起來正確。錯誤似乎在_itoa.c裏面。但是所有我能想到的在外面做的都不是使用這個功能,這是不太可能的!
==4229== Memcheck, a memory error detector
==4229== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==4229== Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for copyright info
==4229== Command: ./test
==4229==
==4229== Use of uninitialised value of size 8
==4229== at 0x54A3DF1: _itoa_word (_itoa.c:196)
==4229== by 0x54A5138: vfprintf (vfprintf.c:1613)
==4229== by 0x555C74F: __vsnprintf_chk (vsnprintf_chk.c:65)
==4229== by 0x407E57: myString::format(char const*, ...) (stdio2.h:79)
==4229== by 0x419D14: ID::toString() (id.cpp:151)
==4229== by 0x41D03D: main (test.cpp:126)
==4229==
==4229== Conditional jump or move depends on uninitialised value(s)
==4229== at 0x54A3DF8: _itoa_word (_itoa.c:196)
==4229== by 0x54A5138: vfprintf (vfprintf.c:1613)
==4229== by 0x555C74F: __vsnprintf_chk (vsnprintf_chk.c:65)
==4229== by 0x407E57: myString::format(char const*, ...) (stdio2.h:79)
==4229== by 0x419D14: ID::toString() (uuid.cpp:151)
==4229== by 0x41D03D: main (test.cpp:126)
==4229==
==4229==
==4229== HEAP SUMMARY:
==4229== in use at exit: 0 bytes in 0 blocks
==4229== total heap usage: 6 allocs, 6 frees, 1,340 bytes allocated
==4229==
==4229== All heap blocks were freed -- no leaks are possible
==4229==
==4229== For counts of detected and suppressed errors, rerun with: -v
==4229== Use --track-origins=yes to see where uninitialised values come from
==4229== ERROR SUMMARY: 3 errors from 2 contexts (suppressed: 4 from 4)