valgrind是什么

用来检测C/C++程序中出现的内存问题

所有对内存的读写将会被检测

malloc() free() new() delete()

这些函数的调用都会被捕获

相关检测的内容

1.读写未初始化或已经释放的内存

2.读写范围超出动态分配的上限

3.数组越界

4.内存泄漏

5.非法的读写

6.malloc/free 或 new/delete 不匹配

7.拷贝内存时发生数据覆盖

使用方法

在编译程序的时候 打开调试模式(-g)显示行号

编译时关闭O1/O2等优化选项

检查C++程序时 可以加上选项 -fno-inline

gcc -g XXX.c -o XXX

valgrind --tool=memcheck --leak-check=full --log-file=./log.txt XXX

(XXX是可执行文件的名字)

执行 valgrind 命令后 会把相关日志写入 log.txt 文件内

演示

错误代码

#include<stdlib.h>int main(void)
{int* a = malloc(520*sizeof(int));a[520] = 1314;//数组下标越界 且 内存没有被释放return 0;
}

编译 执行valgrind过程

日志结果

分析原因

1.Invalid write of size 4

4字节大小内存的非法写入 对应a[520]=1314 数组越界

2.LEAK SUMMAYR 2080 bytes

内存泄漏2080字节 对应分配了520个int大小(520*4)的内存空间却没有释放

C/C++内存检测工具valgrind相关推荐

  1. 【调试】Linux下超强内存检测工具Valgrind

    [调试]Linux下超强内存检测工具Valgrind 内容简介 Valgrind是什么? Valgrind的使用 Valgrind详细教程 1. Valgrind是什么? Valgrind是一套Lin ...

  2. 【Linux】内存检测工具Valgrind

    内存检测工具Valgrind Valgrind是运行在Linux上的一套基于仿真技术的程序调试和分析工具,作者是获得过Google-O'Reilly开源大奖的Julian Seward,它包含一个内核 ...

  3. 动态内存检测工具Valgrind

    1. Valgrind查找内存泄露利器 Valgrind是一个GPL的软件,用于Linux(For x86, amd64 and ppc32)程序的内存调试和代码剖析.你可以在它的环境中运行你的程序来 ...

  4. linux安装系统内存检测,Ubuntu下安装内存检测工具Valgrind

    Ubuntu下安装Valgrind很简单,直接从ubuntu软件中心下载安装,并且还会提供一个简单的图形界面..当然,你也可以在命令行中使用. Valgrind实际上是一个工具集,包含多个调试工具,如 ...

  5. 内存检测王者之剑—valgrind

    记得在大学的刚开始学习C/C++的时候,对于内存问题一点也没有关心过,其实也是关心比较少,知道后来才慢慢注意起来,当时排查是否有内存泄漏全靠手,去看看malloc和free或者new和delete是否 ...

  6. Ubuntu下内存泄露检测工具Valgrind的使用

    在VS中可以用VLD检测是否有内存泄露,可以参考http://blog.csdn.net/fengbingchun/article/details/44195959,下面介绍下Ubuntu中内存泄露检 ...

  7. Windows和Linux内存检测工具:Valgrind,Visual Leak Detector,CppCheck, Cpplint

    1 Linux内存泄漏检测工具Valgrind Valgrind简介 Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合.Valgrind由内核(core)以及基于内核 ...

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

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

  9. Linux:内存泄漏检测工具--Valgrind

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

最新文章

  1. extern 定义_Essential Cython - 2.7 - 定义并使用模板函数
  2. python对象模型映射_看例子,学 Python(三)
  3. 山大计算机上机复试题目,2010年计算机复试上机 回忆
  4. 基于深度学习的中文语音识别系统框架(pluse)
  5. Python for 循环语句-Python 基础教程
  6. 领导公开对你有成见,关键在于是否影响公司决策
  7. A002-185-2531
  8. 等保与ISO27001
  9. Spring注解注入原理
  10. java 生成拼音_JAVA生成拼音码
  11. 转 留美博士生写给后来人的辛酸回忆:你适合读博士和搞科研吗?
  12. Python:try……excepted捕获方法
  13. Go 语言入门系列:指针的基本应用
  14. 【Web动画】SVG 线条动画入门
  15. 从国产浏览器更换到谷歌浏览器的心路历程
  16. Kafka 开启 ACLs 权限控制
  17. 域名转为服务器IP地址的几种方式
  18. linux创建用户张飞,Linux系统操作测试试题 部分
  19. DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020.
  20. 完全免费的中药管理软件

热门文章

  1. 计算化学领域的黑科技
  2. unity3d 中控制手机前后摄像头切换
  3. Java中判断两个日期是否在同一个月
  4. ubuntu关机图标不见了
  5. java 拼音转汉字_用Java转化汉字为拼音全拼
  6. Security:在 SIEM 上运用 Elastic Security
  7. 怎么调计算机运行内存大小,运行内存太小怎么办?如何扩大电脑的运行内存?...
  8. Pandas 根据category自定义排序
  9. icloud安装错误怎么办_怎么办?iCloud云备份失败该如何解决?
  10. 德州仪器宣布收购12寸晶圆厂