いくつかの glib データ構造 (GHashTable、GSList など) を使用してライブラリを開発しています。valgrind を使用して、コードのメモリ リークを頻繁にチェックしています。valgrind が指摘する問題のほとんどは簡単に修正できますが、私には理解できない問題がいくつかあります。
これらはすべて「失われた可能性がある」と報告されています。
valgrind スタックトレースの上部には、常に同じ 4 つのライブラリがあります。
==29997== 1,512 bytes in 3 blocks are possibly lost in loss record 24 of 25
==29997== at 0x4004B11: memalign (vg_replace_malloc.c:532)
==29997== by 0x4004B6B: posix_memalign (vg_replace_malloc.c:660)
==29997== by 0x5E9AC4: ??? (in /lib/libglib-2.0.so.0.1200.3)
==29997== by 0x5EA4FE: g_slice_alloc (in /lib/libglib-2.0.so.0.1200.3)
呼び出しスタックのさらに下には、g_key_file_new()、g_slist_prepend()、g_strsplit()、g_key_file_load_from_file()、g_file_get_contents() などの glib 関数への呼び出しが常にあります。
私の質問は次のとおりです。
誰かがこれに遭遇し、それを回避する方法を見つけましたか?
それとも、これは私が無視できるものですか?ここで提案されているように、メモリプールを使用する glib が原因ですか?
私は使っている
- valgrind-3.5.0
- glib-2.12.3
- gcc (GCC) 4.1.2 20080704 (レッドハット 4.1.2-48)
- CentOS リリース 5.5 (最終版)