2011-09-26 161 views
-1

我的C代碼在使用valgrind進行檢查時不顯示任何內存泄漏。但是,當我將該代碼與另一個系統集成在一起時,該系統具有自己的內存管理,但當然調用malloc來分配內存,則會顯示內存泄漏。 Valgrind檢查每次都是正確的,但這次它不適合我。我想知道是否有內存泄漏的機會,儘管valgrind表示沒有內存泄漏。 valgrind最強大的參數可以設置爲尋找最難的內存泄漏?當valgrind說沒有內存泄漏時內存泄漏的機會

+0

這還不清楚。你能更精確嗎? –

+0

@David,謝謝你的回覆。我使用它的標準庫在** C **中實現了一個數據結構。我使用** valgrind **檢查了內存泄漏。valgrind顯示**沒有內存泄漏**。當我與另一個項目集成相同的代碼時,它顯示內存泄漏。該項目有自己的內存管理模塊,但它使用相同的** malloc **和** free **來分配內存並釋放它。我總是用來做在集成到項目中並且在集成到經過** valgrind **測試的項目中之後從未得到內存泄漏,並且沒有內存泄漏。 – thetna

+0

contd ....但這一次,valgrind沒有顯示任何內存泄漏,但是一旦我將相同的代碼集成到項目中,就會出現內存泄漏。 – thetna

回答

3

我認爲你仍然有內存泄漏的可能性很大 - 不是因爲我認爲valgrind有錯誤,而是因爲我認爲將它與另一個項目集成在一起可能會比你的測試有不同的代碼。 (僅供參考 - 我沒有發現任何內存泄漏的情況,valgrind說我的代碼很清楚,儘管這並不完全證明)。我認爲爲了解決這個問題,要麼將測試添加到您的未集成版本中,要麼在valgrind中運行集成版本。

其他選項可能會確保您不會抑制任何可能有害的錯誤,添加--leak-check = full或者使用您的valgrind設置進行其他操作。