c++应用程序内存泄露检测
前言:c++及c这种底层的编程语言,在获得更多程序控制自由度的同时,也承担了更多内存泄露的风险,有些同学想说,内存泄露只要看下c++的应用程序在运行时内存有没有一直增加不就行了吗,windows和linux系统都有现场的工具可以查看,但如果有些内存泄露了,只在程序结束时才被释放出来,从内存的占用量根本看不出来。
valgrind工具是一款在linux系统中运行的可以直接对应用程序进行内存泄露检测的工具,该工具可以直接定位到cpp文件的函数模块,可以说非常细致了,定义到函数模块在检查内存泄露可以说基本没什么问题了。在c++代码中常见的代码泄露问题大致有以下几种:
- memset内存块没有释放掉,这种情况其实看系统的占用量就能看出来,一般出现这种情况,内存占用量会一直上升,直到系统崩掉。
- malloc内存块没有释放掉;
- memset与delete之间不能有return,否则存在内存泄漏风险,在delete之前就已经返回了导致内存没有释放掉。这种情况比较难排查,光看系统内存的占用量是看不出来的,需要用专门的工具才能检测出来。
- malloc与free之间不能有return,否则存在内存泄漏风险,在free之前就已经返回了导致内存没有释放掉。同上这种情况也比较难排查。
- 访问了已经释放掉的内存区域;
- 访问了未定义的内存区域;
通过定义到函数模块再检测泄露的具体行就容易多了。
目录
1 valgrind工具安装
2. 工具使用
1 valgrind工具安装
ubuntu下直接使用命令安装:
sudo apt-get install valgrind
2. 工具使用
准备好待检测的c++应用程序,打开终端,使用命令:
valgrind --leak-check=full ./test_progress
工具会一步步检测,并运行你的程序,当程序运行完或者你使用ctrl+c暂定后,工具会输出检测的结果:
你可以试一下你自己的应用程序,打马赛克地方就是程序 可能出现内存泄露的地方,可以具体去查一查,但不一定会存在,正如提示的:“are possibly lost in loss record”。
在最后红色框内是总结的内容:
确定存在内存泄露的:1872字节,这个是肯定需要修复的
间接内存泄露的:0字节
可能存在泄露的:这个也有可能是程序没有结束导致的
目前就学到这些,后续有什么新的心得再更新吧。
c++应用程序内存泄露检测相关推荐
- Unix下C程序内存泄露检测工具:valgrind的安装使用
Valgrind是一款用于内存调试.内存泄漏检测以及性能分析的软件开发工具. Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Goo ...
- linux环境下QT程序内存泄露检测-Qt creator +Valgrind检测内存泄漏(linux)
原文查看具体内容: Qt creator +Valgrind检测内存泄漏(linux)_枫影竹韵的博客-CSDN博客 一.说明 由于Qt creator和valgrind是相互独立的,所以需要安装va ...
- Ubuntu下内存泄露检测工具Valgrind的使用
在VS中可以用VLD检测是否有内存泄露,可以参考http://blog.csdn.net/fengbingchun/article/details/44195959,下面介绍下Ubuntu中内存泄露检 ...
- Android NDK 内存泄露检测
前言 最近写C++代码,老是担心代码存在内存泄露,胆战心惊的,Andorid中Java层代码内存泄露可以借助leakcanary进行检测:找了一番,找到了PC上C++上的内存泄露检测库LeakTrac ...
- memwatch内存泄露检测工具
工具介绍 官网 http://www.linkdata.se/sourcecode/memwatch/ 其功能如下官网介绍,挑选重点整理: 1. 号称功能: 内存泄露检测 (检测未释放内存, 即 动态 ...
- DevPartner Studio Professional Edition 11 内存泄露检测使用
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! DevP ...
- 转载浅谈MFC内存泄露检测及内存越界访问保护机制
2019独角兽企业重金招聘Python工程师标准>>> 本文所有代码均在VC2008下编译.调试.如果您使用的编译器不同,结果可能会有差别,但本文讲述的原理对于大部分编译器应该是相似 ...
- 精准 iOS 内存泄露检测工具
MLeaksFinder:精准 iOS 内存泄露检测工具 发表于 2016-02-22 | zepo | 23 Comments 背景 平常我们都会用 Instrument 的 Lea ...
- arm linux下交叉编译valgrind工具进行内存泄露检测和性能分析
C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种纠结的问题.如果crash的地方正是内存使用错误的地方,说明你人品好.如果crash的地方内存明显不是consistent的 ...
最新文章
- SQL For Xml
- Asp.net单点登录解决方案
- Unity 游戏开发技巧集锦之创建透明的材质
- MAC如何查看某个端口的占用情况
- TransmittableThreadLocal 解决 线程池线程复用 无法复制 InheritableThreadLocal 的问题.
- 语音编码分类及编解码标准
- wordpress后台无法登录问题
- curl传post数据流
- mysql中只运行一部分数据_MySQL(一)——MySQL基础和部分面试题
- 带返回值的函数如何在内部同步?
- 软件测试中的接口分析,软件测试接口测试之管理类—叩丁狼分享
- umijs 下载文件
- C语言实现平衡二叉树
- powerDesign导出数据库表结构
- java使用memcached
- 制定科学学习计划的重要性
- 0基础自学鸿蒙-Day_002 HelloWorld
- Android工具 - 随机测试(猴子)
- 用VS实现图片的读取、显示与存储
- 2020-10-22 css画八边形等
热门文章
- Error: Cannot find module ‘@/views/xxx‘ at webpackEmptyContext
- 转:人的认识如何自我超越
- python的书哪个好知乎_python书籍推荐 知乎红色有哪些
- 华为开发者联盟上架Android 安装包 包名重复问题
- 串口通信--CSerialport类
- 中国可以生产计算机cpu吗,国内能不能生产台式电脑使用的CPU?答案当然是肯定的,可以生产...
- 华为轮值CEO徐直军全面剖析华为
- 工厂设计模式—java
- 利用JanusGraph图数据库统计股票涨停板后的走势
- 计算机毕业设计Java高考报考指南网站(源码+系统+mysql数据库+lw文档)