构造函数中的本地内存泄漏
Local memory leak in constructor
当一个静态代码分析软件没有抱怨构造函数中的内存泄漏时,我很感兴趣。任何输入都会有所帮助。请注意,它不是类成员。它是 ctor 内的本地指针
class ABC
{
public:
ABC()
{
int *p = new int[10];
//No delete invoked...
}
};
你真的不需要静态分析工具。GCC已经移植了LLVM的消毒剂,并且从GCC 4.9开始可用。它显然也是叮当的一部分。
✿'‿') ~/test> g++-trunk -fsanitize=undefined,address,leak -std=c++11 测试.cpp -g -墙壁 -额外 -迂腐
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,但你不能同时使用两者。在使用valgrind之前,请先禁用消毒剂。最后但并非最不重要的一点是,gdb 是您的朋友。
相关文章:
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 尽管遵循了规则,内存泄漏在哪里
- 为什么调用堆栈数组会导致内存泄漏
- 在简单示例中,Python3 + ctypes 回调会导致内存泄漏
- 使用模板类的自定义列表类型中的内存泄漏
- 为什么以下C++代码中存在内存泄漏?
- OpenCV 我应该使用智能指针来防止内存泄漏吗?
- 我是否生成线程并导致内存泄漏?
- 多线程程序中出现意外的内存泄漏
- 为什么此函数会导致内存泄漏?
- 在 C++ 库中使用cythonized python时内存泄漏
- 需要帮助查找内存泄漏
- 瓦尔格林德的内存泄漏使用新的
- 无法找出我的代码中的内存泄漏
- C++ 结构内部的unordered_map会导致内存泄漏问题吗?
- 可视化 使用 VS Code 查找C++应用程序中的内存泄漏
- Shared_ptr双链接列表内存泄漏
- C++ 在类中使用常量引用文本时 O2 内存泄漏