Linux 下使用 mtrace 检测是否有内存泄漏

一般使用mtrace检测在堆上创建的对象是否被正常销毁,如果没有被销毁就会造成内存泄漏。

  1. 设置环境变量, mtrace保存位置

    两种方式:
    一种直接在shell命令行设置
    export MALLOC_TRACE=malloc-trace.log
    
    一种在代码中设置
    setenv("MALLOC_TRACE", "malloc-trace.log", "1");
    
  2. 代码中引入 mtrace

    #include    // 头文件
    int main()
    {
           
    	// 开始检测
    	mtrace();
    	
    	// 被检测的代码部分
    	int *a = new int(2);
    	
    	// 结束检测
    	muntrace();
    }
    
  3. 需要加上 -g 编译选项
    g++ -g TrieTree.cpp

  4. ./a.out 执行可执行文件

  5. mtrace a.out malloc-trace.log 查看是否有内存泄漏
    可以发现是有内存泄漏的,因为我们new了一个指针a,但是没有正确的delete
    Linux 下使用 mtrace 检测是否有内存泄漏_第1张图片

你可能感兴趣的:(Linux,mtrace,性能检测,堆)