g++编译时加入-g(注意在编译程序的时候加上-g选项,打印错误信息的时候会给出行号。):
编译之前先修改Makefile:
all : debug
如果还是release的话,报错会显示不出行
然后编译:
g++ -g main.cpp -o test

产生可执行文件

valgrind源码安装:

下载:https://sourceware.org/pub/valgrind/valgrind-3.17.0.tar.bz2bunzip2 valgrind-3.17.0.tar.bz2
sudo tar -xvf valgrind-3.17.0.tar
cd valgrind-3.17.0
./configure
make -j16
sudo make install
加入环境变量
vim ~/.bashrc
将 export PATH=${PATH}:/usr/local/valgrind/bin 加入到最后一行
激活环境变量
source ~/.bashrc
即可使用 valgrind 了

输入命令查看你的valgrind是否正常:

valgrind ls -l 

一、内存泄漏检测:

不保存日志:

valgrind --leak-check=full --show-reachable=yes --track-origins=yes  -v ./可执行文件 参数

--leak-check=full指的是完全检查内存泄漏
--show-reachable=yes是显示内存泄漏的地点
--track-origins=yes查看未初始化的来源

保存日志:

valgrind --tool=memcheck --leak-check=full --show-reachable=yes --track-origins=yes  --log-file=memchk.log -v ./可执行文件 参数

一些输出解读:

内存读写越界:
Invalid write of size 4 或者 Invalid read of size 1
踩内存:
Source and destination overlap in memcpy(0x41a602c, 0x41a6028, 5)
重复释放:
Invalid free() / delete / delete[]
非法指针:
Use of uninitialised value of size 4
由于非法指针赋值导致的程序崩溃:
Process terminating with default action of signal 11 (SIGSEGV)

二、性能检测(调优)

valgrind --tool=callgrind -v ./可执行文件 参数

输出 callgrind.out.PID 文件
双击打开,如提示需要安装文件则安装

一般检测泄露的方法:
1、用valgrind检测泄漏的具体位置,然后改正(一般只修改 definitely lost),改正完再用valgrind检测
2、如果还有泄漏,但是分析不出明确原因,长时间跑一下(比如半天,一天等),看看是否有内存持续增加的现象(原因:valgrind有时候有误报)
3、补充:gdb是调试程序找bug的,功能强大,远胜windows的vs系列调试

更多资料:

Linux/C++ segment default错误 double free or corruption - 简书

Linux下几款C++程序中的内存泄露检查工具 - 小小鸟儿! - 博客园

double free or corruption错误定位_手边笔记-CSDN博客

关于C,C++的内存问题的定位 - LyndonYoung - 博客园

辅助类的方法 https://www.jb51.net/article/207085.htm

mtrace方法  Linux C / C++ 编程检查内存泄露的方法 – 悟能

refer:

Valgrind 使用入门 - 云+社区 - 腾讯云

linux下利用valgrind工具进行内存泄露检测和性能分析_yanghao23的专栏-CSDN博客_valgrind分析

valgrind工具使用详解_高司机的专栏-CSDN博客_valgrind工具

Valgrind

more refer:

C/C++的内存泄漏检测工具Valgrind memcheck的使用经历_三少GG-CSDN博客

more more:

Linux下几款C++程序中的内存泄露检查工具_u012662731的博客-CSDN博客_linux查看内存泄露工具

在 Linux 平台中调试 C/C++ 内存泄漏方法(转) - the_tops - 博客园

今日头条

如何在linux下检测内存泄漏 - Splace - 博客园

Linux 下几款程序内存泄漏检查工具_mlove编程-CSDN博客_linux内存泄露工具

C++内存泄露检查的5个方法_We_are_family678的博客-CSDN博客_c++检查内存泄露

C++内存泄漏检测_ShaYx1991的博客-CSDN博客

【转】C/C++内存泄漏及检测 - 阿玛尼迪迪 - 博客园

C++内存泄漏检测工具-Valgrind使用简介_wu_cai_的专栏-CSDN博客_内存泄漏工具

Linux下几款C++程序中的内存泄露检查工具_OSKernelLAB(gatieme)-CSDN博客_内存泄露检测工具

valgrind内存泄漏检测相关推荐

  1. Unix下C程序内存泄漏检测工具Valgrind安装与使用

    Valgrind是一款用于内存调试.内存泄漏检测以及性能分析的软件开发工具. Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Goo ...

  2. Valgrind ---内存调试,内存泄漏检测以及性能分析的软件开发工具

    Valgrind是一款用于内存调试.内存泄漏检测以及性能分析的软件开发工具.Valgrind这个名字取自北欧神话中英灵殿的入口. 一般使用方式  valgrind --leak-check=full ...

  3. C/C++的内存泄漏检测工具Valgrind memcheck的使用经历

    Linux下的Valgrind真是利器啊(不知道Valgrind的请自觉查看参考文献(1)(2)),帮我找出了不少C++中的内存管理错误,前一阵子还在纠结为什么VS 2013下运行良好的程序到了Lin ...

  4. C++ 内存泄漏检测工具valgrind简单使用

    C++ 内存泄漏检测工具valgrind简单使用 目录 C++ 内存泄漏检测工具valgrind简单使用 valgrind安装 valgrind测试内存泄漏 valgrind安装 通过软件商店下载: ...

  5. 内存泄漏检测神器valgrind

    title: 内存泄漏检测神器valgrind categories:[内存检测] tags:[valgrind] date: 2022/01/08 作者:hackett 微信公众号:加班猿 1.概述 ...

  6. 【安装配置】安装适用于 Linux 的 Windows 子系统 WSL ,完成 Clion 中对内存泄漏检测工具 Valgrind 的配置,亲测可用

    关键词:[Linux] [WSL] [Clion] [Valfrind] 一.前言 今天在回答一个粉丝的评论(关于C++ delete 和 delete[ ])时,引出上面的系列问题,具体流程如下: ...

  7. Linux内存泄漏检测工具 Valgrind使用

    一 .valgrind简介 最近在Linux下程序碰到了内存泄漏的问题,所以在网上找了找Linux下的内存泄漏检测工具,找到了Valgrind这款功能很强大的内存调试.内存泄漏检测以及性能分析.检测线 ...

  8. Linux C/C++ 内存泄漏检测工具:Valgrind - 张宴的博客 - Web系统架构与底层研发

    Linux C/C++ 内存泄漏检测工具:Valgrind - 张宴的博客 - Web系统架构与底层研发 Linux C/C++ 内存泄漏检测工具:Valgrind - 张宴的博客 - Web系统架构 ...

  9. 内存泄漏检测工具(转载)

    内存泄漏检测工具2007年08月08日 1.     ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库. 2.     Dmalloc-Debug ...

  10. C++ 程序内存泄漏检测方法

    一.前言 在Linux平台上有valgrind可以非常方便的帮助我们定位内存泄漏,因为Linux在开发领域的使用场景大多是跑服务器,再加上它的开源属性,相对而言,处理问题容易形成"统一&qu ...

最新文章

  1. PMP知识要点(第七章)
  2. 让Android Studio代码提示不区分大小写的方法
  3. Rearrange an array of positive and negative integers
  4. 【JDBC】各版本jar包下载网址及Tomcat下载
  5. vue 固定div 滚动_vue.js-div滚动条隐藏但有滚动效果的实现方法
  6. Ubuntu 禁用 触摸板
  7. 转换GridView的内容到Excel里面 ---带有格式
  8. 【CCCC】L3-016 二叉搜索树的结构 (30分),,手动建堆(二叉搜索树节点询问),map写法
  9. 怎样利用通达信公式选股?
  10. Matlab出错向量长度必须相同,代码已贴。错误使用plot3,向量长度必须相同
  11. java牛顿法求方程根_牛顿迭代法 求方程根
  12. AMD和英特尔cpu区别
  13. 送 10 本签名书!
  14. ElasticSearch服务器泄露 5700万个人数据外泄
  15. AndroidTV语音搜索
  16. CC00154.bigdatajava——|JavaMySQL.高级.V26|——|MySQL.v27|锁机制_锁概念介绍|
  17. 提高spark任务稳定性1 - Blacklist 机制
  18. 淘宝店铺商品搬家到微店
  19. MongoDB使用用户登录访问
  20. css 弹出窗口之后的笼罩层

热门文章

  1. python12306买票_Python 使用 selenium 实现半自动购买12306火车票
  2. apche服务器网站访问503错误,apache部署python程序出现503错误的解决方法
  3. NYOJ234吃土豆
  4. 经典面试题:手机扫描二维码的测试用例(建议收藏)
  5. 计算机专业 本科论文,计算机专业本科毕业设计和毕业论文的感悟
  6. MSDN 我告诉你(资源库)
  7. linux下c++程序崩溃,如何处理core dump
  8. c语言小熊时钟报告,C语言——小熊时钟.doc
  9. oland显卡HDMI热插拔问题分析
  10. 使用字体编辑软件修改字体