C&C++内存检查工具

Valgrind(memcheck)

valgrind通过监控进程的所有内存申请、释放及内存边界,能够有效发现内存问题;

优点:

  1. 功能全面,内存泄露、读写越界;除了memcheck还包括多线程互斥等各种工具;
  2. 出错后记录日志,便于一次性做全量测试,之后再来分析日志;

缺点:

  1. 有一定的误报率(和检测算法有关)
  2. 因为是虚拟运行环境方式,资源消耗较大;对于大型软件可能会降低软件运行效率;

Address sanitizer

GCC4.8开始自带的内存检查工具,通过编译选项直接在编译阶段对所有内存操作代码增加检查;

优点:

  1. 准确率100%,只要是检查出来的一定是问题

缺点:

  1. 只能检查内存(动态内存+栈)越界读写,无法检查内存泄露;
  2. 检测到问题时直接报错退出,必须修复后才能继续运行;这点对大量测试用例的批量执行不太友好,不过正是其100%的正确率,所以原则就是“检测出的问题你没理由不去修复”,简单说就是逼着你去修复。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. 简述valgrind是什么,为何能进行内存泄露 valgrind是一个程序调试及性能分析的工具集,涵盖mem...
    Shirley_奋进中的虾米阅读 14,017评论 0 2
  • 引文 4月份的时候看到一道面试题,据说是腾讯校招面试官提的:在多线程和高并发环境下,如果有一个平均运行一百万次才出...
    helloworlds阅读 5,457评论 1 12
  • 有人说,养孩子就是不断升级打怪的过程,家长要时刻面临孩子的新挑战。 的确如此。这不,暑假到了,鲁尼整天呆在家里,无...
    鲁尼妈妈阅读 2,523评论 0 1
  • 失之东隅,收之桑榆。我们要相信生活,生活绝对会给你最适合你的生活! 学了四年的汉语言,师范类的中文专业,...
    象大向阅读 1,846评论 0 0
  • 文章目录RunLoop简介1.1 什么是RunLoop? 1.2 RunLoop和线程1.3 默认情况下主线程的R...
    lusen_b阅读 3,068评论 0 2

友情链接更多精彩内容