Valgrind check memory leak - 检查内存泄漏

简介

  • Valgrind工具套件提供了大量的调试和分析工具,帮助您使程序更快、更正确。这些工具中最流行的是Memcheck。它可以检测在C和c++程序中常见的许多与内存相关的错误,这些错误可能导致崩溃和不可预知的行为。

程序准备

  • 使用-g编译程序以包含调试信息,以便Memcheck的错误消息包含准确的行号。如果您能够容忍速度的下降,使用-O0也是一个好主意。在错误消息中使用-O1行号可能是不准确的,尽管一般来说,在-O1编译的代码上运行Memcheck工作得相当好,而且与运行-O0相比,速度上的改进相当显著。不建议使用-O2或以上,因为Memcheck偶尔会报告不存在的未初始化值错误。

使用方法

  • valgrind --leak-check=yes myprog arg1 arg2
  • Memcheck是默认的工具——泄漏检查选项, 打开详细的内存泄漏检测器。程序将运行得更慢。是正常的20到30倍,并使用更多的内存。Memcheck将发出关于它检测到的内存错误和泄漏的消息。

例子

 下面的程序段使用Valring检测查看结果

  #include <stdlib.h>

  void f(void)
  {
     int* x = malloc(10 * sizeof(int));
     x[10] = 0;        // problem 1: heap block overrun
  }                    // problem 2: memory leak -- x not freed

  int main(void)
  {
     f();
     return 0;
  }

猜你喜欢

转载自www.cnblogs.com/yjyyjy/p/12013376.html