2010-12-10 71 views
6

雖然在valgrind中搜索仍然可以找到,但有人說這不是問題。我們不需要解決它。有些人說它需要修復。如果有人能夠明確地告訴我這個問題背後的邏輯是什麼,那麼我會更好。解決這個問題是強制性的嗎?仍然可以在valgrind

[編輯]

我有以下Valgrind的輸出,我的C program.Do我需要解決?

 LEAK SUMMARY: 
     ==27333== definitely lost: 0 bytes in 0 blocks. 
     ==27333==  possibly lost: 0 bytes in 0 blocks. 
     ==27333== still reachable: 96 bytes in 12 blocks. 
     ==27333==   suppressed: 0 bytes in 0 blocks. 
+0

如果這是一個C或C++程序,你甚至沒有說過。 – sharptooth 2010-12-10 07:08:37

回答

9

這取決於。 「仍可到達」意味着您在退出之前沒有取消分配一塊內存,但有一個指向它的指針。

在一個C++程序中,這意味着某個對象可能不是delete d,因此它的析構函數可能沒有運行,因此說有些數據可能沒有保存到磁盤上,例如某些其他操作可能不會採取,因此你的程序可能會產生意想不到的行爲

但是在C程序中沒有析構函數,所以你的程序就不能依賴它。同樣,釋放內存需要一些時間,所以通過在退出時不釋放內存,您可以節省一些時間 - 您的程序將更快地退出(這對於具有大量數據的程序可能很重要)。

因此,如果你的C程序「仍然可以訪問」阻止它不是問題,但這表明程序中的某些代碼沒有釋放內存,因此在重用該代碼時可能會出現錯誤。

相關問題