你好,我得到了使用的valgrind 当我与valgrind --leak-check=full
使用它,事后excution文件的名称,它告诉我在哪个区块内存泄漏是一个问题,但如果我不能找到哪个我确实使用免费的指针。 是否有某种标志指示指针的名称。 如果无论如何告诉我在视觉工作室的泄漏位置,我也非常想听到它发现内存泄漏在Linux环境
1
A
回答
1
它不能告诉你指针的名字,因为一个内存泄漏的整体思路是,在内存没有指针指向的话(至少,供种泄漏是Valgrind的描述为“肯定输了”)。
它所可以告诉你的是源文件和行号的分配内存 - 那么你就需要查找该行源代码以找出其中的内存是应该被释放。例如,如果Valgrind的负的战绩看起来像:
==17110== 49 bytes in 1 blocks are definitely lost in loss record 17 of 35
==17110== at 0x4023D6E: malloc (vg_replace_malloc.c:207)
==17110== by 0x80C4CF8: do_foo (foo.c:1161)
==17110== by 0x80AE325: xyzzy (bar.c:466)
==17110== by 0x8097C46: io (bar.c:950)
==17110== by 0x8098163: main (quux.c:1291)
然后,你需要看看行1161在foo.c
,这是功能do_foo()
内。这是内存分配的地方(与malloc()
),只有你可以说它应该被释放的地方。
1
你没有说你正在使用哪种编译器,我想gcc? 您是否使用-g
来包含调试符号?
+0
是的,我使用GCC,没有我没有使用-g – 2010-08-28 08:36:51
+0
在这种情况下使用-g和检查,因为调试符号可能不可用 – 2010-08-28 09:44:22
相关问题
- 1. C++发现内存泄漏
- 2. 特定于环境的内存泄漏
- 3. Linux和内存泄漏
- 4. 单线程实现多线程环境的内存泄漏
- 5. 泄漏工具没有发现泄漏,但内存不释放
- 6. XMLHttpRequest循环内存泄漏
- 7. WPF发现资源和内存泄漏
- 8. valgrind没有发现内存泄漏?
- 9. 在Linux上调试内存泄漏
- 10. NSInvocation触发内存泄漏
- 11. InputStream发生内存泄漏?
- 12. WPF - 边境与OpacityMask/VisualBrush:内存泄漏
- 13. 我在循环中泄漏内存吗?
- 14. Malloc在循环导致内存泄漏
- 15. 内存泄漏
- 16. 内存泄漏:
- 17. 内存泄漏
- 18. 内存泄漏
- 19. 内存泄漏
- 20. 内存泄漏
- 21. 内存泄漏
- 22. 内存泄漏
- 23. 内存泄漏
- 24. 内存泄漏
- 25. 内存泄漏:
- 26. 内存泄漏
- 27. 内存泄漏
- 28. 内存泄漏
- 29. 内存泄漏
- 30. 内存泄漏
你能告诉我什么是命令,看看在哪里创建内存泄漏请 – 2010-08-29 00:12:35
@Nadav:上面的例子来自正常的Valgrind输出。这就是你需要的。 – caf 2010-08-29 00:50:15