0

私は QT Creator でプログラムを書いており、main.cpp 関数で次の 2 行を使用しています。

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)

この 2 行しかないため、エラーはどこにもありません。

誰が何が間違っているのか説明できますか? ありがとう。

編集:いくつかの実験の後、これはこの操作によってではなく、システム設定などによって引き起こされる可能性があることがわかりました。さまざまな関数を使用して同様のエラーが発生し、valgrind は関数に関連する同じ最初の 4 行 (上記と同じ) を理由として常に報告しQLibrary::setFileNameAndVersion()ます。とにかく、誰かがこれの理由を知っていますか?

4

0 に答える 0