- 使用 valgrind 这个工具,很多人都知道
目前存在个问题,目前我还没找到解决方案
ivTest 是可运行程序
使用命令:valgrind --log-file=valReport --lead-check=full --show-reachable=yes --leak-resolution=low ./ivTest
存在的问题是:对于一个大型的程序,里面会有很多警告,比如变量未初始化等等,一些误警报,导致超过报告的上限
网上也有一些解决方案:但是我这边没有成功的试过.
使用 --suppressions 参数,用来屏蔽不必要的error报错
步骤1:先生成一个需要屏蔽的函数或者变量报错模板文件
步骤2:自己查看报告文件,然后在这个模板文件里面添加相应的需要屏蔽的变量
步骤3:重新引用这个这个报告文件,重新运行,就能去除掉,我们不想看到的误报警
网上有参考方案:valgrind (三)--suppression文件_程序猿Ricky的日常干货的博客-CSDN博客
- 另一种方案是从别人那看到的,sanitize(内存检测工具)
命令:gcc -fsanitize=leak -llsan test.c
编译参数必须指定 -fsanitize=leak,如果检测非法内存则指定-fsanitize=address
(需要链接库:libasan.a,)
参考网址:内存检测工具sanitize_xxb249的博客-CSDN博客_fsanitize
内存泄露检测方式
最新推荐文章于 2024-05-03 14:01:22 发布