Valgrind:使用
問題:
為什麼valgrind在執行以下命令時報告仍有可達位元組簡單程式:
#include <iostream> int main() { return 0; }
答案:
Valgrind 報告由於C 標準庫管理記憶體的方式,仍然存在可存取的位元組。許多實作使用記憶體池分配器來為被破壞的物件保留記憶體以供以後重複使用。當程式退出時,這些池不會被釋放,這會導致 Valgrind 報告記憶體仍然可達。
要強制 STL 立即使用 malloc 並釋放內存,您可以在運行程式之前設定環境變數 GLIBCXX_FORCE_NEW 。這可能會減慢您的程式速度,但會消除 Valgrind 報告。
以上是為什麼 Valgrind 在一個簡單的 C 程式中使用 `` 來報告記憶體洩漏?的詳細內容。更多資訊請關注PHP中文網其他相關文章!