博客园推荐Linux内存检测工具:高效排查C/C++程序内存问题

检测维修 0 110

C/C++这般底层语言,在赋予强大功能以及性能之际,其灵巧的内存访问,也带来了各类纠结的问题 如果crash的所在之处,恰恰是内存使用有误的所在之处,表明你人品佳 如果crash的所在之处,内存明显并非consistent的,或者内存管理信息已然遭到破坏,而且还是随机出现的,那就较为棘手 当然,裸看code打log是一种办法,然而其效率不算高,特别是在运行成本高昂或者重现概率低的情形下。另外,静态检查属于一类方法,存在诸多工具,比如lint、cppcheck、klockwork、splint、o等等,但它存在缺点,即误报情况较多,并不适宜针对具有专门指向性的问题,而且另外较为优良的通常还需要付费,最后,便是动态检查工具,下面会去介绍几个处于Linux平台下主要的运行时内存检查工具,绝大多数都是开源免费的,并且支持x86和ARM平台。

首先,比较常见的内存问题有下面几种:

• memory overrun:写内存越界

• double free:同一块内存释放两次

• use after free:内存释放后使用

• wild free:释放内存的参数为非法值

C/C++内存错误_Linux运行时内存检查工具_博客园 linux 内存检测工具

访问那种尚未初始化,处于未准备好状态的内存 ,那里的东西是未初始化的 。

● 遇上读取非法内存的情况,这在实质上是属于内存越界范畴的 。

• memory leak:内存泄露

在返回之后使用:调用者去访问一个指针,此指针指向被调用者的栈内内存 。

• stack overflow:栈溢出

相关推荐: