Linux:开发:valgrind报错问题总结(2022新)
仅记录个人使用中遇到的问题,可能不会很多,以后慢慢补充
Valgrind问题总结
- 1.Conditional jump or move depends on uninitialised value(s)
- 2.xxx blocks are still reachable in loss record xxx of xxx
- 3.still reachable: xxx bytes in xxx blocks
- 4.Invalid free() / delete / delete[]
- 4.1非法释放野指针
- 4.2重复释放内存
- 4.3此问题补充
- 5.Invalid write of size xxx
- 6.FILE DESCRIPTORS: xx open at exit.
- 7.xx bytes in 1 blocks are definitely lost in loss record xx of xx
1.Conditional jump or move depends on uninitialised value(s)
某些变量未初始化,检查一下数组/class/struct有没有赋初值,或者说看看初始化的大小是否为正确的大小,下面信息会提示在哪个函数里面。
2.xxx blocks are still reachable in loss record xxx of xxx
程序员创建的内存块没有被主动释放,注意使用后的malloc/calloc
内存要free,这种情况一般不会造成什么大问题。当然,另一个层面上的"still reachable"的意思是程序中的某个指针丢失,无法指向原来的内容,则无法释放,才是真正意义上的内存泄漏。
3.still reachable: xxx bytes in xxx blocks
和上面的情况类似,可能是malloc或者calloc后未释放(free),或者打开的文件忘了fclose
,具体情况可以在valgrind运行命令后加上-show-reachable=yes
看看问题出在哪里
4.Invalid free() / delete / delete[]
这个时候就分两种情况了。
4.1非法释放野指针
非法释放野指针的话就会有这样的提示在第三行:by 0xyyyyyyyy: mem_free_wild_pointer (in 你的程序路径)
,不知道野指针是啥的自己百度。
4.2重复释放内存
重复释放内存的提示稍有不同:by 0xyyyyyyyy: mem_double_free (in 你的程序路径)
,这个报错的意思就是你double free
(即重复释放同一块内存)了,检查一下重复free的情况,只free一次即可。
4.3此问题补充
此报错下面还有一部分,就是类似于Address 0xxxxxxxx is 0 bytes inside a block of size 1 free'd
这种提示,无伤大雅。
5.Invalid write of size xxx
动态内存越界,下面还有Address 0xxxxxxxxx is 0 bytes inside a block of size 1 alloc'd
,可以检查一下数组下标之类的。
6.FILE DESCRIPTORS: xx open at exit.
文件指针未关闭,类似这样提示的不用管:
Open file descriptor 0: /dev/pts/4
<inherited from parent>
真正有问题的提示,下面还会给一堆信息告诉你在哪,一般从下往上开始读,比如:
Open file descriptor 3: test.txt
at xxxxxxxx
by xxxxxxxx
by xxxxxxxx
......
7.xx bytes in 1 blocks are definitely lost in loss record xx of xx
这个是说下面提示信息中的内存"definitely lost"(肯定泄露),一般也是类似于malloc了没有free
Linux:开发:valgrind报错问题总结(2022新)相关推荐
- Linux Lernel Panic 报错解决思路
Linux Kernel Panic 报错解决思路 作为系统管理员面对server重启都起不来,那是一个相当烦躁,接显示器查看经常会碰到遇到这样的字眼"Kernel Panic" ...
- linux 编译报错 not a directory,Linux常见英文报错中文翻译
Linux常见英文报错中文翻译(菜鸟必知) 1.command not found 命令没有找到 2.No such file or directory 没有这个文件或目录 3.Permission ...
- Linux Kernel Panic报错解决思路
Linux虽然没有蓝屏现象,不过Kernel报错有时也会让人头疼.有时重启后正常,linux系统运行一段时间后又down了,总不能出现问题就reboot啊.我从网上搜集一下资料,整理了出来,希望大家能 ...
- Linux安装Apache报错:Cannot find a valid baseurl for repo: base/7/x86_64解决方案
Linux安装Apache报错:Cannot find a valid baseurl for repo: base/7/x86_64解决方案 参考文章: (1)Linux安装Apache报错:Can ...
- linux 启动rabbitmq 报错:
linux 启动rabbitmq 报错: Job for rabbitmq-server.service failed because the control process exited with ...
- 阿里云主机安装开发工具包报错处理
环境: 阿里云主机系统版本:Centos6.2 x64 错误: 安装开发工具包报错,使用163yum源: # yum groupinstall "Development tools&q ...
- 在Linux执行命令报错”Arg list too long”的原因分析
http://www.yunweipai.com/archives/558.html 在Linux执行命令报错"Arg list too long"的原因分析 吞拿鱼手卷 于 3 ...
- Linux常见英文报错中文翻译(菜鸟必知)
Linux常见英文报错中文翻译(菜鸟必知) 1.command not found 命令没有找到 2.No such file or directory 没有这个文件或目录 3.Permission ...
- 【报错解决】linux网络编程报错storage size of ‘serv_addr’ isn’t known解决办法
linux网络编程报错storage size of 'serv_addr' isn't known解决办法 报错如下: server.c:18:21: error: storage size of ...
最新文章
- 在UE5创造一个多山的松树森林场景学习教程
- 完整代码+实操!手把手教你操作Faster R-CNN和Mask R-CNN
- 【控制】《现代控制理论》谢克明老师-目录
- VC++ MFC单文档应用程序SDI下调用glGenBuffersARB(1, pbo)方法编译通过但执行时出错原因分析及解决办法:glewInit()初始化的错误...
- 知乎的 Flink 数据集成平台建设实践
- matlab 的均值t检验,用MATLAB做T检验(ttest)
- 开车走吗?朋友......
- 飞秋文件传输模拟实现代码
- 阿里文娱技术专家战獒: 领域驱动设计详解之What, Why, How?
- python两个字典合并、相同key值保留_Python两个字典key相同的值组成新字典?
- 李彦宏、王海峰等成为工程院院士候选人选
- python构建huffman树_python:哈夫曼树,PythonHuffuman
- 《Effective STL中文版》译序
- RNN、LSTM、GRU
- 技巧:使用User Control做HTML生成(转)
- Apache Tomcat选择哪个版本好?
- 局域网搭建git服务器
- 解决外网下载速度过慢问题
- MySOL(狂殴26K字只为博君一赞)
- 云服务器系统结构图,云服务器系统结构图