内存泄漏、越界访问的问题检测--Valgrind

如何判断是内存问题

程序莫名其妙的崩溃, 堆栈有如下信息`free invalid pointer`, 基本断定是内存问题

Valgrind的使用

  1. 使用 -g -O0 重新编译我们的程序
  2. 使用valgrind启动我们的程序, 如果有内存泄漏, valgrind会告诉你源代码的行号
# 使用valgrind 启动myapp, arg是myapp的参数
valgrind myapp arg

问题修复建议

根据valgrind提示的信息,检查源代码

如果能一眼看出问题所在,那么恭喜你

如果不能,这里有几个建议的方向

  • 字符串\0结尾的问题
  • 数组写入越界的问题

参考资料

使用 Valgrind 检测 C++ 内存泄漏 | Senlin's Blog Valgrind 的介绍  Valgrind 可以用来检测程序是否有非法使用内存的问题,例如访问未初始化的内存、访问数组时越界、忘记释放动态内存等问题。在 Linux 可以使用下面的命令安装 Valgrind:123456$ wget ftp://sourceware.org/pub/valgrind/valgrind-3.13.0.tar.bz2$ bzip2 -d valgrind-3.13.http://senlinzhan.github.io/2017/12/31/valgrind/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值