visual studio vc ++的静态代码内存泄漏检测

时间:2010-08-10 15:58:35

标签: visual-studio visual-c++ memory-leaks static-analysis

有没有办法用静态分析工具检测像这样的简单内存泄漏?我无法更改代码以包含运行时内存泄漏检测中使用的tipical包含(struc1是一个带有一些字段的简单结构)。

void noRelease(void)
{
    struc1 *memoryLeak;

    memoryLeak = (struc1 *) malloc(sizeof struc1);
    if (NULL != memoryLeak)
    {
        memoryLeak->a=3;
    }
}

VSTS(Visual Studio Team System)检测到由于异常导致的内存泄漏,但无法看到此简单泄漏。

任何想法都会非常有用。 非常感谢。

2 个答案:

答案 0 :(得分:1)

嗯...封面可以做到这一点,但你必须出售你的房子来支付它。 我曾写过一个静态分析器,它检查在给定的函数范围内是否调用了一对函数。我使用了一个静态分析API,它附带了一个由scitools制作的名为“理解4 C ++”的程序。 www.scitools.com 我使用包含其C API的managed API(我写的)编写了搜索者/审查者。注意:但是理解4 c ++并不是免费的。

无论如何,我写的那个工具会检测上面代码中缺少free。它并不比那更聪明。如果指针在其他地方是免费的,它就找不到它。

答案 1 :(得分:1)

CPPCheck执行静态代码分析并检测那些泄漏

http://cppcheck.sourceforge.net/