Valgrind没有检测到全局指针中的泄漏

时间:2015-05-28 05:22:04

标签: c++ memory-leaks valgrind

我在以下代码上运行valgrind --leak-check=full test.cpp

#include <iostream>

int* p = new int[42]; // no leak reported

int main() 
{
    p[0] = 42; // use it
    std::cout << p[0];
}

并且没有泄漏报告:

==37293== LEAK SUMMARY:
==37293==    definitely lost: 0 bytes in 0 blocks
==37293==    indirectly lost: 0 bytes in 0 blocks
==37293==      possibly lost: 0 bytes in 0 blocks

每当我在int* p = new int[42];内移动定义main()时,它都有自动存储持续时间,valgrind会检测到内存泄漏。为什么不检测静态存储持续时间对象的泄漏?我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:6)

他们仍然可以访问,所以不会被视为泄露。如果要显示甚至可以访问的块,请将--leak-check=full --show-leak-kinds=all传递给valgrind。

一般来说,这种&#34;泄漏&#34;不是一个bug。在您的示例代码中,没有&#34;正确的位置&#34;放置相应的delete