结果分析

任务完成后会跳转到分析结果界面,如下图所示。

Call Tree页签会列出存在内存泄漏的函数。以main函数为例,可以看到main函数及其调用函数的内存泄漏情况,包括main函数本身内存泄漏的大小及次数情况。

在源码页签,能看到具体的内存泄漏代码位置,方便修改代码。以本示例代码为例,main函数中存在的一次泄漏,malloc分配了一片内存,但未释放,如下图所示。

解决main函数泄漏问题的具体步骤如下。

  1. 在合适的地方增加以下代码,释放内存。

    free(p);
    p = NULL;

  2. 重新编译运行,使用工具再次扫描。

  3. 重新编译运行后,main函数本身已经不存在内存泄漏问题。重复以上步骤依次修改存在内存泄漏风险的函数,解决内存泄漏问题。