首頁 >後端開發 >C++ >為什麼 Valgrind 在一個簡單的 C 程式中使用 `` 來報告記憶體洩漏?

為什麼 Valgrind 在一個簡單的 C 程式中使用 `` 來報告記憶體洩漏?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-15 17:00:17277瀏覽

Why Does Valgrind Report Memory Leaks in a Trivial C   Program Using ``?

Valgrind:使用 的簡單程序仍然可以訪問內存

問題:

為什麼valgrind在執行以下命令時報告仍有可達位元組簡單程式:

#include <iostream>
int main() {
  return 0;
}

答案:

Valgrind 報告由於C 標準庫管理記憶體的方式,仍然存在可存取的位元組。許多實作使用記憶體池分配器來為被破壞的物件保留記憶體以供以後重複使用。當程式退出時,這些池不會被釋放,這會導致 Valgrind 報告記憶體仍然可達。

要強制 STL 立即使用 malloc 並釋放內存,您可以在運行程式之前設定環境變數 GLIBCXX_FORCE_NEW 。這可能會減慢您的程式速度,但會消除 Valgrind 報告。

以上是為什麼 Valgrind 在一個簡單的 C 程式中使用 `` 來報告記憶體洩漏?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn