Valgrind报告了QString :: toDouble的错误

时间:2013-05-27 20:14:24

标签: c++ qt memory-leaks qstring

我在QT Creator中编写程序,我只是在main.cpp函数中使用这两行:

QString a = "10.98";
double b = a.toDouble();

一切似乎都很好,但是当我用valgrind检查时,它会报告内存泄漏:

valgrind --leak-check=full ./Example 

(...)

==15937== 
==15937== 242 (96 direct, 146 indirect) bytes in 1 blocks are definitely lost in loss record 50 of 60
==15937==    at 0x4C2C154: operator new(unsigned long) (vg_replace_malloc.c:298)
==15937==    by 0x533710E: ??? (in /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.1)
==15937==    by 0x53373DA: QLibrary::setFileNameAndVersion(QString const&, QString const&) (in /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.1)
==15937==    by 0x533744B: QLibrary::QLibrary(QString const&, QString const&, QObject*) (in /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.1)
==15937==    by 0x52A3894: ??? (in /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.1)
==15937==    by 0x5269F10: QLocalePrivate::updateSystemPrivate() (in /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.1)
==15937==    by 0x526A1EA: ??? (in /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.1)
==15937==    by 0x526A21C: ??? (in /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.1)
==15937==    by 0x526A389: QLocale::QLocale() (in /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.1)
==15937==    by 0x52923F3: QString::toDouble(bool*) const (in /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.1)
==15937==    by 0x40110D: main (in /host/Users/Tereza/Documents/CVUT-FSv/8.semestr/BP/example/Example)
==15937== 
==15937== LEAK SUMMARY:
==15937==    definitely lost: 192 bytes in 2 blocks
==15937==    indirectly lost: 284 bytes in 6 blocks
==15937==      possibly lost: 0 bytes in 0 blocks
==15937==    still reachable: 19,931 bytes in 58 blocks
==15937==         suppressed: 0 bytes in 0 blocks
==15937== Reachable blocks (those to which a pointer was found) are not shown.
==15937== To see them, rerun with: --leak-check=full --show-reachable=yes
==15937== 
==15937== For counts of detected and suppressed errors, rerun with: -v
==15937== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)

错误不可能是其他任何地方,因为只有这两行。

有人可以解释我有什么问题吗?感谢。

编辑:经过几次实验后,我发现这可能不是由此操作特别引起的,而是可能是某些系统设置或类似的事情。我使用不同的函数得到了类似的错误,并且总是将valgrind报告作为与QLibrary::setFileNameAndVersion()函数相关的前四行(如上所述)的原因。无论如何,有人知道这个的原因吗?

0 个答案:

没有答案