首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++静态和动态内存泄漏检测工具是如何工作的?

C++静态和动态内存泄漏检测工具是如何工作的?
EN

Stack Overflow用户
提问于 2013-07-09 11:02:43
回答 1查看 1.2K关注 0票数 0

C++静态和动态内存泄漏检测工具是如何工作的?通过这些工具的内存泄漏检测测试是否意味着程序中没有内存泄漏的机会?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-09 11:50:35

静态测试主要是查看源代码,并尝试为每个new找到匹配的delete (为每个malloc查找free )。

大多数动态测试将每个内存块标记为已分配,以指示是什么代码分配了该内存块。然后,当程序关闭时,它们在堆中查找尚未删除的块。如果他们发现了,他们会打印出数据,以表明是什么代码分配了泄漏的块。

这两种方法都可能失败。许多静态测试可能会被像异常这样的东西所欺骗,在这种情况下,您的代码似乎会无条件地删除已分配的内容,但当在new和匹配的delete之间抛出异常时,可能不会。

动态测试可能会被您未能测试泄漏内存的代码路径所欺骗(仅举一个简单的例子)。它们只跟踪您在执行期间执行的代码路径所分配的内存,因此如果有您没有执行的分配,它们无法提供有关正在删除的内存的任何信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17539209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档