首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >华润报告内存绝对没有错误。

华润报告内存绝对没有错误。
EN

Stack Overflow用户
提问于 2018-03-20 21:55:01
回答 1查看 848关注 0票数 1

我正在测试C代码的内存泄漏,似乎找不到泄漏的来源,因为有0错误。Valgrind报告说,存在一个(相当重要的)内存泄漏:

代码语言:javascript
复制
==30492== Memcheck, a memory error detector
==30492== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==30492== Using Valgrind-3.14.0.GIT and LibVEX; rerun with -h for copyright 
info
==30492== Command: ./a.out --leak-check=full --track-origins=yes
==30492== 
(This is where the input and output cases are displayed, which are a lot)
==30492== 
==30492== HEAP SUMMARY:
==30492==     in use at exit: 39,155 bytes in 167 blocks
==30492==   total heap usage: 380 allocs, 213 frees, 53,426 bytes allocated
==30492== 
==30492== LEAK SUMMARY:
==30492==    definitely lost: 20,480 bytes in 2 blocks
==30492==    indirectly lost: 2,064 bytes in 1 blocks
==30492==      possibly lost: 0 bytes in 0 blocks
==30492==    still reachable: 348 bytes in 9 blocks
==30492==         suppressed: 16,263 bytes in 155 blocks
==30492== Rerun with --leak-check=full to see details of leaked memory
==30492== 
==30492== For counts of detected and suppressed errors, rerun with: -v
==30492== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)

代码是在几个文件中编写的,由数百行组成,所以在这里发布它可能会有点多。有人能解释一下这里有什么问题吗?或者你需要看一下实际的代码才能给出答案?我只能找到很少的关于瓦兰的文件,而且我被困在这里。

(val差尔建议重新运行

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-23 23:47:49

有可能得到假阳性(例如,在共享库初始化器中,或者像libcrypto.so这样的东西确实泄漏了一些分配)。

然而,你应该经常检查--很可能你忘记了一些分配。

在您的输出中,我们可以看到:

命令:./a.out -检漏-检查=全-跟踪-来源=“是”

这表明您已经使用以下方法调用val差制:

代码语言:javascript
复制
valgrind ./a.out --leak-check=full --track-origins=yes

您的应该使用

代码语言:javascript
复制
valgrind --leak-check=full --track-origins=yes ./a.out

如果您发现一个无法控制的泄漏(或其他诊断),因为它是第三方库的内部,则可以创建一个抑制文件

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49394746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档