Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 构造函数中的本地内存泄漏_C++ - Fatal编程技术网

C++ 构造函数中的本地内存泄漏

C++ 构造函数中的本地内存泄漏,c++,C++,当一个静态代码分析软件没有抱怨构造函数内存泄漏时,我很感兴趣。任何投入都会有帮助。请注意,它不是班级成员。它是ctor中的本地指针 class ABC { public: ABC() { int *p = new int[10]; //No delete invoked... } }; 你不需要一个静态的分析工具。GCC已经进行了移植,从GCC 4.9开始就可以使用。很明显,这也是叮当声的一

当一个静态代码分析软件没有抱怨构造函数内存泄漏时,我很感兴趣。任何投入都会有帮助。请注意,它不是班级成员。它是ctor中的本地指针

class ABC
{
    public:
        ABC()
        {
            int *p = new int[10];
            //No delete invoked...
        }
};

你不需要一个静态的分析工具。GCC已经进行了移植,从GCC 4.9开始就可以使用。很明显,这也是叮当声的一部分

✿''-'`~/test>g++-trunk-fsanitize=undefined,address,leak-std=c++11 test.cpp-g-Wall-Wextra-pedantic

test.cpp: In constructor ‘ABC::ABC()’:
test.cpp:6:18: warning: unused variable ‘p’ [-Wunused-variable]
             int *p = new int[10];
              ^
(✿`-`test>/a.out

=================================================================
==1713==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x7f2535b07919 in operator new[](unsigned long) ../../../../trunk/libsanitizer/asan/asan_new_delete.cc:62
    #1 0x4008cb in ABC::ABC() ~/test/test.cpp:6
    #2 0x400856 in main ~/test/test.cpp:13
    #3 0x31a1c21d64 in __libc_start_main (/lib64/libc.so.6+0x31a1c21d64)

SUMMARY: AddressSanitizer: 40 byte(s) leaked in 1 allocation(s).

这是一个运行时工具,但它在这种情况下工作得非常好。当然,也总是有,但你不能同时使用两者。使用valgrind前先禁用消毒剂。最后但并非最不重要的是,你的朋友

是时候寻找更好的静态代码分析软件了?不清楚你在问什么问题。所以你的问题真的是关于这个你没有提到名字的软件吗?@remyabel不完全是。这是关于深海潜水的行为,你能澄清一下吗?听起来问题是为什么你的工具没有检测到内存泄漏。