gpt4 book ai didi

c - Valgrind:抑制一次性内存泄漏

转载 作者:太空宇宙 更新时间:2023-11-04 08:31:02 29 4
gpt4 key购买 nike

Valgrind 报告我的程序中有多个内存泄漏,其中一些是反复发生的泄漏(即它们发生在多个 block 中),但大多数是一次性的,即在程序初始化时发生的分配,我不关心在程序退出之前进行处理。我知道我可以编写抑制文件来抑制特定库、函数等的泄漏,但我还没有找到一种方法来抑制泄漏次数有限。有办法做到这一点吗?

目前,我使用我编写的一个小程序从一次性泄漏中过滤 Valgrind 的报告文件(因此当报告文件中的一段以 X bytes leaked in 1 blocks 开头时,该段是从报告文件中删除),但显然我更愿意配置 Valgrind 来抑制这些泄漏,尤其是因为我的过滤器没有做任何事情来保持泄漏摘要的准确性。

我问是因为泄漏的初始化代码是由编译器生成的,该编译器将我编写程序所用的语言编译为 C,而我对修改没有兴趣。

最佳答案

Valgrind 不会报告在程序退出时仍可访问的已分配内存的错误,因此您有真正的泄漏,即使泄漏的内存量是固定的并且(目前)无关紧要。考虑实际释放您的指针,或者确保它们不会超出范围或被覆盖。在某些情况下,您可以使用数组而不是动态分配的内存。

但是,如果您坚持使用压制来压制对真正泄漏的报告,那么请让 Valgrind 为您完成这项工作。添加选项 --gen-suppressions=yes(如果您想交互式选择要生成的抑制)或 --gen-suppressions=all(为所有生成抑制错误)到您的 valgrind 命令行。您需要将 Valgrind 输出的抑制描述符复制到抑制文件中。

关于c - Valgrind:抑制一次性内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28370148/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com