博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 内存分析-valgrind
阅读量:6316 次
发布时间:2019-06-22

本文共 2016 字,大约阅读时间需要 6 分钟。

valgrind包括了以下几个比较重要的模块:memcheck, cachegrind, callgrind, helgrind, drd, massif, dhat, sgcheck, bbv. 还有一些小工具,但不是每个人都能用上,比如Lackey, Nulgrind.

在linux系统下下载源程序之后,通过./configure, make, make install命令安装在系统中。

用法: $valgrind  [valgrind-options]  your-prog  [your-prog-options]

The most important option is --tool which dicates which valgrind tool to run. 默认情况下是 --tool==memcheck . 

Memcheck is a memory error detector. 它能检测到C和C++程序中的下述问题:

1. 访问不该访问的内存  2. 使用未定义的变量  3. 堆内存的不正确释放,例如多次使用堆块,或者malloc/new/new[]与free/delete/delete[]的错配。

4. src和dst指针指向的内存区域存在重叠  5. passing a fishy ( possibly negative) value to the size parameter of a memory allocation function.  6. 内存泄露

 如果使用malloc, calloc, realloc, valloc或者memalign, 必须以free释放

如果使用new分配内存,必须使用delete释放

如果使用new[]分配内存,必须以delete[]释放

 

each bit in the system has an associated V bit, which follows it around everywhere, even inside the CPU. it says whether or not the accompanying bit has a legitimate value.

Copying values around dose not cause Memcheck to check for, or report on , errors. However, when a value is used in a way which might conceivably affect your program's externally-visible behaviour, the associated V bits are immediately checked. If any of these indicate that the value is undefined (even partially), an error is reported.

这段话简单来说就是,每一bit的数据,都有一个伴随bit,称为 V(valid-value) bit. 它存储了这一bit数据是否合法(是否被定义)。只是简单复制数据,memcheck并不会检查和回报对应V bit的信息。但只用使用到的数据存在破坏程序的迹象,对应的V bits就会立即被检查,如过使用到的数据不合法,memcheck便会立即回报错误。例如一个数据被用作判断条件时,他对应的V bits就会被检查。

checks on defineness only occur in three places: when a value is used to generate a memory address, when control flow decision needs to be made, and when a system call is detected. Memcheck checks definedness of parameters as required.

Every bit in memory or in the CPU has an associated valid-value( V) bit. In addition, all bytes in memory, but not in the CPU, has an associated valid-address (A) bit. This indicates whether or not the program can legitimately read or write that location.

 

转载于:https://www.cnblogs.com/cbyzju/p/5453687.html

你可能感兴趣的文章
软技能(面试)1
查看>>
css兼容性整理,水平、垂直居中等
查看>>
linux关机命令大全 来源于网络
查看>>
HTML5的离线储存怎么使用,以及工作原理
查看>>
监听器HttpSessionListener
查看>>
高级事件(一)
查看>>
The 18th Zhejiang University Programming Contest Sponsored by TuSimple -C Mergeable Stack
查看>>
BZOJ 3289 Mato的文件管理
查看>>
2、消失的路由,源码的解析基础
查看>>
【linux】保存屏幕日志log
查看>>
List对象分组排序算法
查看>>
Elementary Methods in Number Theory Exercise 1.4.6
查看>>
java:第二章
查看>>
ASP.NET MVC 4 批量上传文件
查看>>
在openshift上创建django应用
查看>>
MVC学习以及研究
查看>>
NYOJ325zb的生日
查看>>
应用框架的特点
查看>>
大话编程(四)
查看>>
数据库设计系列[01]一些重要的概念
查看>>