linux 下内存泄漏分析

news/2024/6/3 19:09:35 标签: stm32, 单片机, 嵌入式硬件

linux 下内存泄漏分析

Linux下内存问题检测神器:Valgrind

在写大型C/C++工程时难免会发生内存泄漏现象,系统编程中一个重要的方面就是有效地处理与内存相关的问题。
你的工作越接近系统,你就需要面对越多的内存问题。有时这些问题非常琐碎,而更多时候它会演变成一个调试内存问题的恶梦。
常见的内存问题一共七种:

  1. 动态内存泄露;malloc分配的,没有及时dellet调
  2. 资源泄露,比如文件指针不关闭;
  3. 动态内存越界;
  4.数组内存越界;
  5.动态内存double free;
  6.使用野指针,即未初始化的指针;
  7.释放野指针,即未初始化的指针。

内存问题非常难定位,对于小工程来说,简单去检查代码中new和delete的匹配对数就基本能定位到问题,
但是一旦代码量上升到以万单位时,仅靠肉眼检查来定位问题那就非常困难了,
所以我们需要利用工具帮助我们找出问题所在。

在Linux系统下内存检测工具首推Valgrind,一款非常好用的开源内存管理框架。
Valgrind其实是一个工具集,内存错误检测只是它众多功能的一个,
但我们用得最多的功能正是它——memcheck。

该工具可以检测下列与内存相关的问题 :

  1.未释放内存的使用(使用野指针)
  2.对释放后内存的读/写(使用野指针)
  3.从已分配内存块尾部的读/写(动态内存越界)
  4.内存泄露(没有成对地使用malloc/free和new/delete)
  5.不匹配的使用malloc/new/new[] 和 free/delete/delete[]
  6.重复释放内存(double free的情况同样是根据malloc/free的匹配对数来体现的)

http://www.niftyadmin.cn/n/5018337.html

相关文章

从 Clickhouse 到 Apache Doris:有赞业务场景下性能测试与迁移验证

本文导读: 当前,电商运营的主要痛点不仅来自多变的市场和客户需求,也受困于碎片化用户触达等带来的竞争与挑战。为了深度挖掘用户价值、培养用户忠诚度、实现业绩增长,有赞为商家搭建了全方位 OLAP 分析系统,提供实时…

为什么工作流中围绕XML做EDI报文数据解析/生成?

经常有客户问起,为什么在处理EDI文件时不一次到位,而需要使用多个端口来分次进行处理呢,是不是想要多占用几个端口好多卖钱呀? 实际上,在一开始的知行EDI产品中,功能还没有这么完善,当时只支持…

VTK实现模型添加标注标记功能

VTK实现模型添加标注标记高级功能 功能演示 添加标记模型 变换标记模型(朝向、位置、缩放) 删除标记模型 功能介绍 支持在模型表面添加标记模型,标记模型可以切换为不同的模型(演示里是圆柱体)标记模型支持颜色…

python文件的打开,读入,写入

文件打开方式 r:只读模式,用于打开文件以供读取。如果文件不存在,会引发 FileNotFoundError 异常。 w:覆盖写模式,用于创建或打开文件以供写入,如果文件已经存在,会完全覆盖原文件的内容。 x…

SSMP整合综合案例【SpringBoot的基本增删改查】

一、基本页面 主页面 添加 删除 分页 条件查询 实体类开发————使用Lombok快速制作实体类 Dao开发————整合MyBatisPlus,制作数据层测试 Service开发————基于MyBatisPlus进行增量开发,制作业务层测试类 Controller开发————基于Restful…

git密码正确还提示git Permission denied, please try again.

在gitlab上传项目的时候出现Permission denied, please try again问题。 在使用git克隆或上传项目的时候出现 gitxxx password: 让你输入密码,你发现无论输入什么都会出现Permission denied, please try again问题,其实这个主要是工程的SSH key没有加入…

长尾效应和肥尾效应

长尾效应(Long Tail Effect)和肥尾效应(Fat Tail Effect)都是与概率分布和数据分布相关的概念,它们描述了不同类型的数据分布特征。这两种效应有一些相似之处,但也有明显的不同。 长尾效应(Long…

MySQL——数据的删除以及MySQL中的约束

删除数据 删除表中的一行数据,也必须加上 WHERE条件,否则整列的数据都会被删除。删除语句: delete from 表名 where 条件; 他会将所有的符合条件的数据删除,如果不写条件,则表中的数据全部删除: 如果不添…