Valgrind: Memory stillreachable with trivial program using
這個問題是關於 Valgrind 中關於仍可存取記憶體的警告。包含
問題:
一個包含
#include <iostream> int main() { return 0; }
答案:
Valgrind 警告不是錯誤,而是一個錯誤特徵。 C 標準函式庫的許多實作都使用自己的記憶體池分配器。被破壞物件的記憶體不會立即釋放並傳回給作業系統,而是保留在池中以供日後重複使用。當程式退出時,記憶體池也沒有被釋放,導致 Valgrind 報告記憶體仍然可達。
解決方案:
有幾種方法可以停用池快取並強制STL 使用malloc 並釋放記憶體可能:
g++ -D__USE_MALLOC ...
export GLIBCPP_FORCE_NEW=1
export GLIBCXX_FORCE_NEW=1
其他注意:
以上是為什麼 Valgrind 報告使用 `` 的簡單程式仍可存取記憶體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!