GCC内置了哪些安全措施来检查内存泄漏?如果是这样,我该如何使用它们?当我使用" gcc -Wall -o run run.c"进行编译时,编译器似乎并不关心在代码末尾是否释放了任何已分配的堆空间。我在Google上找不到任何简单的修复方法。
非常感谢你的时间。
编辑: 谷歌搜索确实指出了Valgrind和其他工具。但我很好奇为什么编译器无法解决这个问题。作为一个新手,检查每个" malloc"是否足够简单。有一个"免费"与之相关联。
答案 0 :(得分:3)
有两种方法可以分析问题的代码 - 静态分析和运行时分析。静态分析读取代码 - 这是编译器真正做得很好的。代码问题的运行时分析发生在代码链接到另一组库时,这些库可以看到代码在监视下运行时实际执行的操作。查找内存泄漏对于静态分析很困难,但对于运行时分析包则不然。
其他运行时分析就像代码覆盖一样 - 代码的所有部分都运行了吗? gcov这样做,就像valgrind和电栅栏一样,寻找泄漏等记忆问题。
所以,不,没有真正好的编译器安全措施来测试内存泄漏。
答案 1 :(得分:0)