私はtbbを使用するC++プログラムを持っていますが、GCC 6.2.1で64ビットLinuxでコンパイルしています。 Iは(-fsanitize =アドレス)消毒アドレスをコンパイルし、実行ユニットテスト、この出力が生成される:Leak Sanitizerでメモリリークの理由を見つける方法
...
[ PASSED ] 56 tests.
=================================================================
==12326==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 54 byte(s) in 3 object(s) allocated from:
#0 0x7f4c634fd020 in strdup (/usr/lib64/libasan.so.3+0x58020)
#1 0x301d215bb4 (/usr/lib64/libtbb.so.2+0x301d215bb4)
SUMMARY: AddressSanitizer: 54 byte(s) leaked in 3 allocation(s).
make[3]: *** [CMakeFiles/check] Error 1
make[2]: *** [CMakeFiles/check.dir/all] Error 2
make[1]: *** [CMakeFiles/check.dir/rule] Error 2
make: *** [check] Error 2
コードを最適化してコンパイルされてオフ(-O0)と-fno-省略-フレーム - ポインタ。どのようにして漏れに関する情報を得ることができますか?
経由でエラーに中止しないようにLSANを依頼することができますvalgridを試してみましたか? – gsamaras
良い点@gsamaras私は、valgrindがより多くの情報を返すかどうか調べようとします。 – Perennialista