Valgrind:使用
问题:
为什么 valgrind 在运行以下命令时报告仍然有可达字节简单程序:
#includeint main() { return 0; } 答案:
Valgrind 报告由于 C 标准库管理内存的方式,仍然存在可访问的字节。许多实现使用内存池分配器来为被破坏的对象保留内存以供以后重用。当程序退出时,这些池不会被释放,这会导致 Valgrind 报告内存仍然可达。
要强制 STL 立即使用 malloc 并释放内存,您可以在运行程序之前设置环境变量 GLIBCXX_FORCE_NEW 。这可能会减慢您的程序速度,但会消除 Valgrind 报告。
以上是为什么 Valgrind 在一个简单的 C 程序中使用 `` 报告内存泄漏?的详细内容。更多信息请关注PHP中文网其他相关文章!