2012-07-25 47 views
0

我正在做一些Libgcrypt測試,當我使用valgrind檢查內存使用情況時,在出口處有3,200字節正在使用。Libgcrypt程序中的內存泄漏

我曾嘗試使用

valgrind --leak-check=full --track-origins=yes --show-reachable=yes ./my_program 

但是的valgrind的valgrind只能抱怨這條線從我的代碼:

version = gcry_check_version("1.5.0"); 

和Valgrind的約Libgcrypt的內部功能。

我的測試代碼是在這裏:http://www.tiago.eti.br/storage/post2.c ,我使用Libgcrypt 1.5.0從Debian的SID庫

據Libgcrypt的錯誤,還是一個我我做錯了什麼?

回答

0

並非所有圖書館都非常小心地清理所有資源。只要某些「永久性」分配只發生一次,並且在程序結束時才使用(例如對於版本字符串),那麼庫完全有可能永遠不會解除分配。

因此是處理第三方庫的不幸現實,如果它困擾你,你應該爲Valgrind製作一個壓制文件,並使用--gen-suppressions=all

記住,「仍可達」的記憶就是「懶惰」,而不是一個真正的泄漏,因爲你從來沒有真正失去分配。泄漏應該被認爲是一個真正的編程錯誤,而仍然可以訪問,未取消分配的內存可能是也可能不是可以原諒的快捷方式。

+0

非常感謝你! – 2012-07-27 17:46:10